注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

lazydba

hello

 
 
 

日志

 
 

mysql存储过程  

2009-06-17 20:02:13|  分类: all about databa |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
delimiter $$ --首先要定义结束符,不然会报错,默认结束符应该是分号(;)

create procedure p1()
begin
?? select 1; --如果不定义delimiter,这里就会报错,mysql认为这里已经结束
end
$$
--结果集(select语句)可以直接返回给调用者,可以返回多个不同结果集。
--调用方应当有接口取得多个结果集

create procedure p2()
begin
??? declare i integer;
??? set i = 1;
??? my_loop: loop
??? select i;
??? set i = i + 1;
??????? if i > 10 then
??? ??? leave my_loop; --leave退出循环,这里的标签my_loop好像是必须的
??? end if;
??? end loop my_loop;
end
$$


create procedure p3()
begin
??? declare i int;
??? declare c cursor for select * from t1; --定义游标
??? declare continue handler for not found set @lastrow = 1; --异常处理,以上几个declare语句顺序不能搞错
??? open c; --打开游标
??? myloop: loop
??????? fetch c into i; --记录取完后会抛not found异常,continue handler捕获该异常,设置状态变量@lastrow
??? select i;
??????? if @lastrow = 1 then --如果状态变量的值为1,说明记录已经都处理完了,退出循环
??? ??? leave myloop;
??? end if;
??? end loop myloop;
??? close c; --关闭游标
end
$$

  评论这张
 
阅读(101)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017