从MySQL 5.0 开始,
支持了一个全新的SQL句法:
PREPARE stmt_name
FROM preparable_stmt
;
EXECUTE stmt_name
[USING @var_name
[, @var_name
] ...];
通过它,我们就可以实现类似 MS SQL 的 sp_executesql 执行动态SQL语句!
同时也可以防止注入式攻击
例子:
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`(IN ids VARCHAR(8000))
BEGIN
IF ids IS NOT NULL AND LENGTH(ids) > 0 THEN
SET @SqlCmd = 'SELECT * FROM tb_tables t WHERE id IN(';
SET @SqlCmd = CONCAT(@SqlCmd , ids);
SET @SqlCmd = CONCAT(@SqlCmd , ')');
PREPARE stmt FROM @SqlCmd;
EXECUTE stmt;
ELSE
SELECT * FROM tb_tables t;
END IF;
END
CALL test('\'123\',\'321\',\'456\'')
是 5.0.7 或者更高的,你还可以在 LIMIT 子句中使用它,
示例如下:mysql> SET @a=1;
mysql> PREPARE STMT FROM "SELECT * FROM tbl LIMIT ?";
mysql> EXECUTE STMT USING @a;
mysql> SET @skip=1; SET @numrows=5;
mysql> PREPARE STMT FROM "SELECT * FROM tbl LIMIT ?, ?";
mysql> EXECUTE STMT USING @skip, @numrows;
使用 PREPARE 的几个注意点:
A: PREPARE stmt_name
FROM preparable_stmt
; 预定义一个语句,并将它赋给 stmt_nameD:
PREPARE stmt_name 的作用域是当前客户端连接会话可见。
E:
要释放一个预定义语句的资源,可以使用 DEALLOCATE PREPARE 句法。F:EXECUTE stmt_name
句法中,如果 stmt_name 不存在,将会引发一个错误。G:如果在终止客户端连接会话时,没有显式地调用 DEALLOCATE PREPARE 句法释放资源,服务器端会自己动释放它。
H:在预定义语句中,CREATE TABLE, DELETE
, DO
, INSERT
, REPLACE
, SELECT
, SET
, UPDATE
, 和大部分的 SHOW
句法被支持。
G:PREPARE 语句不可以用于存储过程,自定义函数!但从 MySQL 5.0.13 开始,它可以被用于存储过程,仍不支持在函数中使用!
相关推荐
MysqlMonitor 一款监控mysql执行语句的工具
支持本地 远程 域名方式连接数据库 并执行MYsql语句,带返回信息 一共3条命令 连接数据库 远程执行SQL语句 关闭数据库连接 变量 DLL路径 = “插件放置的路径” 文本型 变量 IP = “数据库的IP地址,支持域名” 文本...
mysql批量语句,传入list 批量修改mysql批量语句,传入list 批量修改mysql批量语句,传入list 批量修改
Mysql 语句执行监控器 监控每条MYSQL语句 调试用的``````````````
简单常用的一些MySQL执行语句,可用于小站开发
MySQL mysql_query 函数执行SQL语句.docx
mysql修改语句 在 MySQL中,可以使用 UPDATE 语句来修改、更新一个或多个表的数据。...【实例 1】在 tb_courses_new 表中,更新所有行的 course_grade 字段值为 4,输入的 SQL 语句和执行结果如下所
MySQL语句执行监测
本代码,用python语句,实现了一次插入多条sql语句。希望能对大家带来帮助。
以前有过一篇关于MySQL查询语句的执行过程,这里总结一下update语句的执行过程。由于update涉及到数据的修改,所以,很容易推断,update语句比select语句会更复杂一些。 1,准备 创建一张test表 CREATE TABLE `...
连接mysql
《Effective MySQL之SQL语句最优化》是由MySQL专家Ronald Bradford撰著,书 中提供了很多可以用于改进数据库和应用程序性能的最佳实践技巧,并对这些技巧 做了详细的解释。本书希望能够通过一步步详细介绍SQL优化...
本文就sql和mysql的语句执行顺序问题向大家作了详细介绍,小编觉得挺不错的,这里分享下,供大家参考。
《Effective MySQL之SQL语句最优化》提供了很多可以用于改进数据库和应用程序性能的最佳实践技巧,并对这些技巧做了详细的解释。《Effective MySQL之SQL语句最优化》希望能够通过一步步详细介绍SQL优化的方法,帮助...
#适用于实时查询mysql占用CPU高的语句,循环监控mysql进程情况,当CPU大于一定的前执行中的SQL情况. #执行前,修改ENV认证部分 #编写:Chaoren #2022年3月4日18:38:53 # #对于执行时间非常短的SQL可能监控到的语句...
/*执行预处理语句*/ {DEALLOCATE | DROP} PREPARE statement_name /*删除定义*/ ; PREPARE语句用于预备一个语句,并指定名称statement_name,以后引用该语句。语句名称对大小写不敏感。preparable_stmt可以是一个...
mysql查询语句汇总 MySQL作为流行的关系型数据库管理系统,其查询语句的...聚合函数在MySQL中用于对一组值执行计算,并返回单个值。常见的聚合函数有COUNT(), SUM(), AVG(), MAX(), 和 MIN()等。结合GROUP BY子句,可以
MySQL支持3条用来创建循环的语句:WHILE、REPEAT和LOOP语句。 WHILE语句语法格式为: [begin_label:] WHILE search_condition DO statement_list END WHILE [end_label] 说明:语句首先判断search_condition是否为真...
mysql查询语句汇总 MySQL查询语句是数据库操作的核心部分,涵盖了数据的增删改查等多个方面。由于篇幅限制,我将尽量简洁而全面地介绍MySQL查询语句的各个方面,以满足您的需求。 一、基础查询 基础查询是最常用的...
update语句是PHP+MySQL中常用的操作,判断update语句是否执行成功是其中非常重要的一个环节。本文就以实例展示了php+MySQL判断update语句是否执行成功的方法。分享给大家供大家参考之用。具体方法如下: 代码一: $...