Mysql中的存储过程
Mysql 5.0 推出来的一个功能,在我看来和oracle差不多的,语法上稍微有一点点不同,下面写了一个例子模板,大家用到时可以很容易套用。
mysql> delimiter // --语句结束符更改为//
--定义存储过程
mysql>create procedure ptest(out return_val int)
begin
declare a1 ,b1 int default 5; --定义变量
declare cur1 cursor for select a from test; --定义游标
declare exit handler for not found begin insert into test_error(msg) values(\'ptest not found\'); set b1=1 ;end; --定义异常处理(not found)
declare exit handler for sqlexception set b1=1;--定义异常捕获及处理(sqlexception 表示sql执行异常时)
open cur1; --打开游标
repeat
fetch cur1 into a1;
until b1=1 --出现任何异常,程序退出
end repeat;
close cur1;
set return_val=a1; --变量赋值
end;
//
mysql> delimiter ; --语句结束符更改回;
--如何调用存储过程:
mysql>call ptest(@va);
注:
1.创建存储子程序需要CREATE ROUTINE权限
2.查询存储过程的定义SHOW CREATE PROCEDURE ptest\\G
3.查询存储过程的状态SHOW CREATE PROCEDURE STATUS LIKE \'ptest\'\\G
参考:
http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html
建议继续学习:
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Incessant 来源: Incessant
- 标签: 存储过程
- 发布时间:2009-10-11 22:36:09
- [155] Go Reflect 性能
- [18] 公钥私钥加密解密数字证书数字签名详解
- [16] osx平台上lol英雄联盟launcher启
- [16] 基于HTTP缓存轻松实现客户端应用的离线支持
- [14] 我的git笔记
- [14] Joomla反序列化漏洞的查漏补缺
- [13] 在JavaScript中什么时候使用==是正
- [13] SSL多域名绑定证书的解决方案
- [12] Linux内存中的Cache真的能被回收么?
- [11] 相似度计算之马氏距离