1、動態sql, 即動態引數:
在儲存過程中,想要直接用表名變數做引數,動態執行sql,不能直接寫 ?12
3456
7create
procedure
( $tablename
char
(20) )
begin
select
*
from
tablename;
end
mysql 不支援表名作為變數,這樣會直接將變數名「tablename」作為表名去查詢,解決的方法是: ?12
3456
78910
11begin
set
@sql = concat(
'select * from '
, $tablename);
prepare
stmt1
from
@sql;
execute
stmt1;
deallocate
prepare
stmt1;
end
;
2 得到動態sql, select查詢的結果:
可以直接 在sql 語句中 得到, "select * into @var" 就行了,後邊就可以直接運用該變數了。
例子: ?12
3456
7set
@sql = concat(
'select max(id) into @max_id from '
, $tablename);
prepare
stmt1
from
@sql;
execute
stmt1;
deallocate
prepare
stmt1;
此時,@max_id 就儲存了查詢結果。 ?12
3456
78910
1112
1314
1516
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 儲存過程 動態引數 查詢執行結果
mysql function procedure 學習使用小結 1 動態sql,即動態引數 在儲存過程中,想要直接用表名變數做引數,動態執行sql,不能直接寫 1 2 3 4 5 6 7 createprocedure tablenamechar 20 begin select fromtablen...
mysql 儲存過程 動態引數 查詢執行結果
mysql function procedure 學習使用小結 1 動態sql,即動態引數 在儲存過程中,想要直接用表名變數做引數,動態執行sql,不能直接寫 create procedure tablename char 20 begin select from tablename endmysq...
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...