[转帖]PREPARE 简单应用_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2023 | 回复: 0   主题: [转帖]PREPARE 简单应用        下一篇 
Michelle
注册用户
等级:列兵
经验:88
发帖:58
精华:0
注册:2011-8-11
状态:离线
发送短消息息给Michelle 加好友    发送短消息息给Michelle 发消息
发表于: IP:您无权察看 2014-11-18 11:11:55 | [全部帖] [楼主帖] 楼主

语法如下:

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;
===


python应用(片段)

def MYSQL_PREPARE(Connect,Statement_Name,Query)#定义prepare
def MYSQL_EXECUTE_PREPARE_RESULT(Connect,Statement_Name,*arg)#传入参数并执行sql
sql_statment= "SELECT * FROM table_name WHERE id > 10 and email != '' LIMIT 1,?"
#以下为调用程序片段
Num=20
MYSQL_PREPARE(dbcon,"prepare_name",sql_statment)
dataAll = MYSQL_EXECUTE_PREPARE_RESULT(dbcon,"prepare_name",str(Num))#传入参数执行


说明:

1 首先定义sql串,并将变量用?代替

2 调用函数创建PREPARE

        在函数中执行类似于这样的语句 PREPARE statement_name FROM sql_text /*定义*/

3 调用函数执行PREPARE

        在函数中首先执行,类似于 SET @p='1'; 这样的语句

        然后执行 类拟于EXECUTE prod USING @p,@q; 这样的语句

======

转自http://blog.163.com/sea_haitao/

使用 PREPARE 的几个注意点:

A: PREPARE stmt_name FROM preparable_stmt;


 预定义一个语句,并将它赋给 stmt_name ,stmt_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 开始,它可以被用于存储过程,仍不支持在函数中使用!

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论