这篇文章将为大家详细讲解有关关系型数据库中预处理语句准备、执行、解除分配怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
关系型数据库官方将准备、执行、解除分配统称为准备陈述。
我习惯称其为【预处理语句】。
其用法十分简单,
PREPARE stmt_name FROM preparable_stmt
EXECUTE stmt_name
[USING @var_name[,@http://
var_name]...] -
举个栗子:
mysql PREPARE pr1 FROM 'SELECT?';
查询正常,0行受影响(0.01秒)
准备的声明
mysql SET @a=1,@ b=10
查询正常,0行受影响(0.00秒)
mysql EXECUTE pr1 USING @a,@ b;
-
| ?|
-
| 11 |
-
一行一组(0.00秒)
mysql EXECUTE pr1 USING 1,2;-只能使用用户变量传递。
错误1064 (42000):您的结构化查询语言语法有错误;查看与您的关系型数据库服务器版本相对应的手册,了解
第一行"1,2"附近使用的正确语法
MySQL DECLARATE PREMIUM pr1
查询正常,0行受影响(0.00秒)
使用PAREPARE STATEMENT可以减少每次执行结构化查询语言的语法分析,
比如用于执行带有在哪里条件的挑选和删除,或者更新,或者插入,只需要每次修改变量值即可。
同样可以防止结构化查询语言注入,参数值可以包含转义符和定界符。
适用在应用程序中,或者结构化查询语言脚本中均可。
更多用法:
同样准备.从可以直接接用户变量:
MySQL CREATE TABLE a(a int);
查询正常,0行受影响(0.26秒)
关系型数据库插入到选择1中;
查询正常,1行受影响(0.04秒)
记录: 1副本: 0警告: 0
关系型数据库插入到选择2中;
查询正常,1行受影响(0.04秒)
记录: 1副本: 0警告: 0
关系型数据库插入到选择3中;
查询正常,1行受影响(0.04秒)
记录: 1副本: 0警告: 0
MySQL SET @ SELECT _ test=CONCAT(' SELECT * FROM ',@ table _ name);
查询正常,0行受影响(0.00秒)
mysql SET @ table _ name=' a '
查询正常,0行受影响(0.00秒)
MySQL PREPARE pr2 FROM @ select _ test;
查询正常,0行受影响(0.00秒)
准备的声明
mysql EXECUTE pr2
-
| a|
-
| 1|
| 2 |
| 3 |
-
3行一组(0.00秒)
MySQL DROP PREMIUM pr2-此处滴可以替代重新分配
查询正常,0行受影响(0.00秒)
每一次执行完执行时,养成好习惯,须执行解除分配准备…语句,这样可以释放执行中使用的所有数据库资源(如游标)。
不仅如此,如果一个会议的预处理语句过多,可能会达到最大_准备_ stmt _计数的上限值。
预处理语句只能在创建者的会话中可以使用,其他会话是无法使用的。
而且在任意方式(正常或非正常)退出会话时,之前定义好的预处理语句将不复存在。
如果在存储过程中使用,如果不在过程中重新分配掉,在存储过程结束之后,该预处理语句仍然会有效。
关于“MySQL中预处理语句准备、执行、解除分配怎么用"这篇文章就分享到这里了,希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/56696.html