- 预处理语句使用函数解析
- 预处理语句,limit动态赋值示例
-
预处理语句使用函数解析
prepare:
PREPARE name FROM preparable_stmt(“预定义sql”);预定义一个语句,并将它赋给 name ,name 是不区分大小写的。
preparable_stmt 语句中的 ? 是sql参数占位符。
如果新的 PREPARE 语句使用了一个已存在的 name ,原有的将被立即释放! 新的会继续执行。
PREPARE name 的作用域是当前客户端连接会话可见。
execute:
execute stmt_name执行stmt_name语句
using:
mysql连接函数在联表sql中表示量表都存在的,SELECT A JOIN B USRING(colunm)
在预处理语句中,execute stmt_name using @par 表示连接执行语句变量,stmt_name中的参数占位符数量,需要与using连接的变量数量一致,位置一一对应即可正确执行。
deallocate:
deallocate PREPARE 资源释放 -
预处理语句,limit动态赋值示例
复杂sql需多条sql拼接组合,还可以使用concat字符拼接函数
-- 定义预处理语句
prepare s1 from 'SELECT * FROM ms_member_info LIMIT ?,?';
-- 设置分页变量参数
SET @pageSize=100;
SET @page=1;
-- 执行预处理语句,占位符赋值
execute s1 using @page,@pageSize;
-- 资源释放
deallocate prepare s1;
-- 使用concat拼接函数,拼接sql的预处理语句
SET @stmt = concat('SELECT * FROM ms_member_info');
SET @stmt1= (concat(@stmt,' LIMIT ?,?'));
-- 查看拼接出来的sql
SELECT @stmt1;
-- 定义预处理语句
prepare s1 from @stmt1;
-- 设置分页变量参数
SET @pageSize=100;
SET @page=1;
-- 执行预处理语句
execute s1 using @page,@pageSize;
-- 释放资源
deallocate prepare s1;