mysql PREPARE用法_mysql prepare语句使用
每次都看别人的,今天我自己写下来,以后就不用看别人的了
语法
PREPARE statement_name FROM sql_text /*定义*/
EXECUTE statement_name [USING variable [,variable...]] /*执行预处理语句*/
DEALLOCATE PREPARE statement_name /*删除定义*/
例
mysql> PREPARE prod FROM "INSERT INTO examlple VALUES(?,?)";
mysql> SET @p='1';
mysql> SET @q='2';
mysql> EXECUTE prod USING @p,@q;
mysql> SET @name='3';
mysql> EXECUTE prod USING @p,@name;
mysql> DEALLOCATE PREPARE prod;
1.用变量做表名: 简单的用set或者declare语句定义变量,然后直接作为sql的表名是不行的,mysql会把变量名当作表名。在其他的sql数据库中也是如此,mssql的解决方法是将整条sql语句作为变量,其中穿插变量作为表名,然后用sp_executesql调用该语句。 这在mysql5.0之前是不行的,5.0之后引入了一个全新的语句,可以达到类似sp_executesql的功能(仅对procedure有效,function不支持动态查询): PREPARE stmt_name FROM preparable_stmt;
EXECUTE stmt_name [USING @var_name [, @var_name] ...];
{DEALLOCATE | DROP} PREPARE stmt_name; 为了有一个感性的认识,
下面先给几个小例子: mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> SET @a = 3;
mysql> SET @b = 4;
mysql> EXECUTE stmt1 USING @a, @b;
+------------+
| hypotenuse |
+------------+
| 5 |
+------------+
mysql> DEALLOCATE PREPARE stmt1; mysql> SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> PREPARE stmt2 FROM @s;
mysql> SET @a = 6;
mysql> SET @b = 8;
mysql> EXECUTE stmt2 USING @a, @b;
+------------+
| hypotenuse |
+------------+
| 10 |
+------------+
mysql> DEALLOCATE PREPARE stmt2; 如果你的MySQL 版本是 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_name ,tmt_name 是不区分大小写的。
B: 即使 preparable_stmt 语句中的 ? 所代表的是一个字符串,你也不需要将 ? 用引号包含起来。
C: 如果新的 PREPARE 语句使用了一个已存在的 stmt_name ,那么原有的将被立即释放! 即使这个新的 PREPARE 语句因为错误而不能被正确执行。
D: 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 句法被支持。
I: PREPARE 语句不可以用于存储过程,自定义函数!但从 MySQL 5.0.13 开始,它可以被用于存储过程,仍不支持在函数中使用!
详细出处参考:http://www.jb51.net/article/7032.htm
mysql PREPARE用法_mysql prepare语句使用相关推荐
- mysql ignore用法_mysql insert 语句中的 ignore 关键字的作用
IGNORE:表明,如果你插入的行已经存在,则成功返回,不会报错(会有警告),忽略当前插入的记录,不使用IGNORE时,如果插入了相同的行数据时,MySQL则会报错. MySQL是通过主键来判断两个行 ...
- mysql update用法_mysql update语句的用法详解
首先,单表的UPDATE语句: UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] ...
- mysql的更新用法_mysql update语句的用法详解
本节内容: mysql数据库中的update语句. 首先,单表的UPDATE语句: UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr ...
- mysql易百_MySQL Replace语句
在本教程中,您将学习如何使用 MySQL的REPLACE语句来插入或更新数据库表中的数据. MySQL REPLACE语句介绍 MySQL的REPLACE语句是一个MySQL扩展于SQL标准的语句. ...
- mysql checksum用法_MySQL checksum理解_mysql
mysql checksum了解 在主从复制中Checksum常常需要对某些重要的表进行一致性检查. Checksum Table在逻辑备份时候前后是否可以用于验证数据一致性.扩展一下发现有一些有趣的 ...
- mysql prepare 存储过程_mysql prepare 存储过程使用
语法 [sql] PREPARE statement_name FROM sql_text /*定义*/ EXECUTE statement_name [USING variable [,variab ...
- mysql的更新用法_mysql更新语句的详细用法
首先,单个表的UPDATE语句: 更新[LOW_PRIORITY] [IGNORE] tbl_name SET col_name1 = expr1 [,col_name2 = expr2 ...] [ ...
- mysql中declare语句用法_MySQL declare语句用法介绍
MySQL declare语句是我们经常用到的语句,下文就为您举例说明了MySQL declare语句的用法,希望对您学习MySQL declare语句的使用能有所帮助. MySQL declare语 ...
- mysql更新语句用法_MySQL update 语句的正确用法
以下的文章主要介绍的MySQL update 语句的实际用法,我们首先是以单表的UPDATE语句来引出实现MySQL update 语句的实际方案,以下就是文章的详细内容描述,望你看完之后会有收获. ...
最新文章
- springboot配置index
- matlab实现二项分布
- Silverlight4中右键菜单实现-附源码下载
- 还你一个干净清爽的Windows系统--win7重装小记
- 个人简介页面如何设计?优秀案例给你灵感
- sql 转置_SQL 如何实现动态的行列转置
- 每期一词:catastrophe
- asp.net在ie7中使用FileUpload上传前预览图片
- USB Host读取U盘成功
- HTML5植物大战僵尸网页版游戏源码
- 如何在mac下安装win7
- 高通量测序领域常用名词解释
- Jquery插件包-jqwidgets
- 《地球帝国2》中文版秘籍
- 如何查看2020最新版谷歌地球高精度卫星地图(附下载方法)
- 【多线程与高并发】从一则招聘信息进入多线程的世界
- 常用、免费的API接口网址
- Chrome 安装插件与使用技巧
- Linux easy-rsa制作证书
- python制作词典软件_AlphaDict: 它是一个轻量级的开放词典格式的开源词典软件,你可以制作自己的词典, 也是一个跨平台的软件支持 linux, unix and windows....
热门文章
- Linux tty1密码,Linux 无法从本地字符界面(tty1-tty6)登陆深度解析
- VOIP技术连载之一VOIP简介
- java jdk win2003_Windows XP/2003下JDK的安装
- CES 2023:NVIDIA发力元宇宙与汽车市场
- 遍历ArrayList的三种方法
- 用python画颗爱心祝生日快乐_新学者如何用python祝女朋友生日快乐?
- React 16.x折腾记 - (1) React Router V4 和antd侧边栏的正确关联及动态title的实现
- C#窗体TextBox只能输入数字
- day3之2020年12月29日产品经理学习之需求管理
- 077. Zookeeper 集群相关信息