MySql存储过程中遇到的几个问题

一、PREPARE语法:
PREPARE SQLStr1 FROM @SQLStr;
EXECUTE SQLStr1;
DEALLOCATE PREPARE SQLStr1;
    需要注意的地方:
          1.PREPARE SQLStr1 FROM @SQLStr;预定义一个语句,并将它赋给SQLStr1(不区分大小写);
		    2.即使 preparable_stmt 语句中的 ? 所代表的是一个字符串,你也不需要将 ? 用引号包含起来。
	       3. 如果新的 PREPARE 语句使用了一个已存在的 SQLStr1,那么原有的将被立即释放! 即使这个新的 PREPARE 语句因为错误而不能被正 确执行。
               4.PREPARE SQLStr1的作用域是当前客户端连接会话可见。
               5. 要释放一个预定义语句的资源,可以使用 DEALLOCATE PREPARE 句法。
               6.EXECUTE SQLStr1句法中,如果 SQLStr1 不存在,将会引发一个错误。
               7.如果在终止客户端连接会话时,没有显式地调用 DEALLOCATE PREPARE 句法释放资源,服务器端会自动释放它。

 
 
8.  在预定义语句中,CREATE TABLE, DELETE, DO, INSERT, REPLACE, SELECT, SET, UPDATE, 和大部分的 SHOW 句法被支持。
9.PREPARE 语句不可以用于存储过程,自定义函数!但从 MySQL 5.0.13 开始,它可以被用于存储过程,仍不支持在函数中使用!
二、
declare和 set @var = value变量定义的区别:
set @var = value的变量直接写在字符串中就会被当作变量转换 ;而declare的变量和参数传入的变量则必须用CONCAT来连接。
EXECUTE SQLStr1 USING @a 这样的语句USING后面的变量也只能用set @var=value这种,declare和参数传入的变量不行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值