每次都看别人的,今天我自己写下来,以后就不用看别人的了

语法

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语句使用相关推荐

  1. mysql ignore用法_mysql insert 语句中的 ignore 关键字的作用

    IGNORE:表明,如果你插入的行已经存在,则成功返回,不会报错(会有警告),忽略当前插入的记录,不使用IGNORE时,如果插入了相同的行数据时,MySQL则会报错. MySQL是通过主键来判断两个行 ...

  2. mysql update用法_mysql update语句的用法详解

    首先,单表的UPDATE语句: UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] ...

  3. mysql的更新用法_mysql update语句的用法详解

    本节内容: mysql数据库中的update语句. 首先,单表的UPDATE语句: UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr ...

  4. mysql易百_MySQL Replace语句

    在本教程中,您将学习如何使用 MySQL的REPLACE语句来插入或更新数据库表中的数据. MySQL REPLACE语句介绍 MySQL的REPLACE语句是一个MySQL扩展于SQL标准的语句.  ...

  5. mysql checksum用法_MySQL checksum理解_mysql

    mysql checksum了解 在主从复制中Checksum常常需要对某些重要的表进行一致性检查. Checksum Table在逻辑备份时候前后是否可以用于验证数据一致性.扩展一下发现有一些有趣的 ...

  6. mysql prepare 存储过程_mysql prepare 存储过程使用

    语法 [sql] PREPARE statement_name FROM sql_text /*定义*/ EXECUTE statement_name [USING variable [,variab ...

  7. mysql的更新用法_mysql更新语句的详细用法

    首先,单个表的UPDATE语句: 更新[LOW_PRIORITY] [IGNORE] tbl_name SET col_name1 = expr1 [,col_name2 = expr2 ...] [ ...

  8. mysql中declare语句用法_MySQL declare语句用法介绍

    MySQL declare语句是我们经常用到的语句,下文就为您举例说明了MySQL declare语句的用法,希望对您学习MySQL declare语句的使用能有所帮助. MySQL declare语 ...

  9. mysql更新语句用法_MySQL update 语句的正确用法

    以下的文章主要介绍的MySQL update 语句的实际用法,我们首先是以单表的UPDATE语句来引出实现MySQL update 语句的实际方案,以下就是文章的详细内容描述,望你看完之后会有收获. ...

最新文章

  1. springboot配置index
  2. matlab实现二项分布
  3. Silverlight4中右键菜单实现-附源码下载
  4. 还你一个干净清爽的Windows系统--win7重装小记
  5. 个人简介页面如何设计?优秀案例给你灵感
  6. sql 转置_SQL 如何实现动态的行列转置
  7. 每期一词:catastrophe
  8. asp.net在ie7中使用FileUpload上传前预览图片
  9. USB Host读取U盘成功
  10. HTML5植物大战僵尸网页版游戏源码
  11. 如何在mac下安装win7
  12. 高通量测序领域常用名词解释
  13. Jquery插件包-jqwidgets
  14. 《地球帝国2》中文版秘籍
  15. 如何查看2020最新版谷歌地球高精度卫星地图(附下载方法)
  16. 【多线程与高并发】从一则招聘信息进入多线程的世界
  17. 常用、免费的API接口网址
  18. Chrome 安装插件与使用技巧
  19. Linux easy-rsa制作证书
  20. python制作词典软件_AlphaDict: 它是一个轻量级的开放词典格式的开源词典软件,你可以制作自己的词典, 也是一个跨平台的软件支持 linux, unix and windows....

热门文章

  1. Linux tty1密码,Linux 无法从本地字符界面(tty1-tty6)登陆深度解析
  2. VOIP技术连载之一VOIP简介
  3. java jdk win2003_Windows XP/2003下JDK的安装
  4. CES 2023:NVIDIA发力元宇宙与汽车市场
  5. 遍历ArrayList的三种方法
  6. 用python画颗爱心祝生日快乐_新学者如何用python祝女朋友生日快乐?
  7. React 16.x折腾记 - (1) React Router V4 和antd侧边栏的正确关联及动态title的实现
  8. C#窗体TextBox只能输入数字
  9. day3之2020年12月29日产品经理学习之需求管理
  10. 077. Zookeeper 集群相关信息