mysql function & procedure 學習使用小結:
1、動態sql, 即動態引數:
在儲存過程中,想要直接用表名變數做引數,動態執行sql,不能直接寫
create procedure ( $tablename char(20) )mysql 不支援表名作為變數,這樣會直接將變數名「tablename」作為表名去查詢,解決的方法是:begin
select * from tablename;
end
begin2 得到動態sql, select查詢的結果:set @sql = concat('select * from ', $tablename);
prepare stmt1 from @sql;
execute stmt1;
deallocate prepare stmt1;
end;
可以直接 在sql 語句中 得到, "select * into @var" 就行了,後邊就可以直接運用該變數了。
例子:
set @sql = concat('select max(id) into @max_id from ', $tablename);此時,@max_id 就儲存了查詢結果。prepare stmt1 from @sql;
execute stmt1;
deallocate prepare stmt1;
drop procedure if exists get_service_id;delimiter $$
create procedure get_service_id
( in $tablename varchar(25),
in $begindate varchar(25)
) set @sql = concat('select id into @mainid from ', $tablename , ' where date_time>=\"', $begindate, '\" order by date_time limit 1');
prepare stmt1 from @sql;
execute stmt1;
deallocate prepare stmt1;
end;
$$delimiter ;
mysql儲存過程動態引數查詢
1 動態sql,即動態引數 在儲存過程中,想要直接用表名變數做引數,動態執行sql,不能直接寫 12 3456 7createprocedure tablenamechar 20 begin select fromtablename end mysql 不支援表名作為變數,這樣會直接將變數名 tab...
mysql 儲存過程 動態引數 查詢執行結果
mysql function procedure 學習使用小結 1 動態sql,即動態引數 在儲存過程中,想要直接用表名變數做引數,動態執行sql,不能直接寫 1 2 3 4 5 6 7 createprocedure tablenamechar 20 begin select fromtablen...
Mysql 儲存過程處理動態引數
刪除 drop procedure if exists up common select 建立 create procedure up common select in t name varchar 50 begin declare v sql varchar 500 set v sql conca...