mysql 儲存過程 動態引數 查詢執行結果

2021-08-02 08:30:31 字數 2972 閱讀 1773

mysql function & procedure 學習使用小結:

1、動態sql, 即動態引數:

在儲存過程中,想要直接用表名變數做引數,動態執行sql,不能直接寫

1

2

3

4

5

6

7

createprocedure( $tablenamechar(20) )

begin

select*fromtablename;

end

mysql 不支援表名作為變數,這樣會直接將變數名「tablename」作為表名去查詢,解決的方法是:

1

2

3

4

5

6

7

8

9

10

11

begin

set@sql = concat('select * from ', $tablename);

preparestmt1from@sql;

executestmt1;

deallocatepreparestmt1;

end;

2 得到動態sql, select查詢的結果:

可以直接 在sql 語句中 得到, "select * into @var" 就行了,後邊就可以直接運用該變數了。

例子:1

2

3

4

5

6

7

set@sql = concat('select max(id) into @max_id  from ', $tablename);

preparestmt1from@sql;

executestmt1;

deallocatepreparestmt1;

此時,@max_id 就儲存了查詢結果。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

dropprocedureif exists get_service_id;

delimiter $$

createprocedureget_service_id

(

in$tablenamevarchar(25),

in$begindatevarchar(25)

)

set@sql = concat('select id into @mainid from ', $tablename ,' where date_time>=\"', $begindate,'\" order by date_time limit 1');

preparestmt1from@sql;

executestmt1;

deallocatepreparestmt1;

end;

$$

delimiter ;

多思考,多總結,快樂成長!

mysql儲存過程動態引數查詢

1 動態sql,即動態引數 在儲存過程中,想要直接用表名變數做引數,動態執行sql,不能直接寫 12 3456 7createprocedure tablenamechar 20 begin select fromtablename end mysql 不支援表名作為變數,這樣會直接將變數名 tab...

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...