MySQL使用者變數 預處理語句 動態語句用法

2021-07-16 06:25:33 字數 1719 閱讀 9551

預製語句的sql語法基於三個sql語句:

prepare stmt_name from preparable_stmt;

execute stmt_name [using @var_name [, @var_name] ...];

prepare stmt_name;

表結構:

table:

tab1

columns:

idbigint(20)

name

varchar(50)

資料 id, name

'1', '中'

'2', '中國'

'3', '中國風'

#搭建測試環境

drop table if exists tab1;

create table tab1(id bigint,name nvarchar(50));

insert into tab1(id,name)values(1,"中"),(2,'中國'),(3,'中國風');

#列值傳參條件

set @id=1;

set @sql=concat('select id,name from tab1 where id=?');

prepare stmt from @sql;

execute stmt using @id;

deallocate prepare stmt;# 或用 drop prepare stmt

/*# id, name

'1', '中'

*/#列值傳參多條件,引數順序按"?"順序傳參

set @id1=1,@id2=2;

set @sql=concat('select id,name from tab1 where id between ? and ?');

prepare stmt from @sql;

execute stmt using @id1,@id2;

deallocate prepare stmt;# 或用 drop prepare stmt

/*# id, name

'1', '中'

'2', '中國'

*/#動態表名傳參用法

set @tabname="tab1",@id=2;

set @sql=concat('select id,name from ',@tabname,' where id=?');

prepare stmt from @sql;

execute stmt using @id;

deallocate prepare stmt;# 或用 drop prepare stmt

/*# id, name

'2', '中國'

*/#結果集顯示列傳參用法同表名方法一樣,需要先拼接sql語句

set @tabname="tab1",@id=3,@cols='id,name';

set @sql=concat('select ',@cols,' from ',@tabname,' where id=?');

prepare stmt from @sql;

execute stmt using @id;

deallocate prepare stmt;# 或用 drop prepare stmt

/*# id, name

'3', '中國風'

*/

mysql預處理語句 MYSQL 預處理語句

一 預處理語句介紹 mysql支援服務端預處理語句,預處理語句利用高效的客戶端 服務端二進位制協議。用佔位符替換引數值的預處理語句有下列兩個好處 每次執行語句時,解析語句的開銷更小。通常,資料庫應用程式會處理大量相似的語句,只在子句中更改文字或變數值,比如查詢和刪除的where子句,更新的updat...

mysql 預處理語句 in MySQL預處理語句

預製語句的sql語法基於三個sql語句 prepare stmt name from preparable stmt execute stmt name using var name var name prepare stmt name prepare語句用於預備乙個語句,並賦予它名稱stmt na...

MySQL預處理語句

解決問題思路 在mysql中是不允許使用變數作為欄位名的。但是我們可以通過將變數作為字串,新增到一句完整的查詢語句中。這個語句作為乙個字串,可以使用sql預處理語句使用。然後,execute這個預處理語句。示例 將 xx1 作為欄位名,查詢 speed n 注意 如果語句中有varchar型別值,需...