DB2存储过程相信大家都比较了解了,下面为您介绍的是DB2存储过程中的两种指针循环方式,希望对您学习DB2存储过程能有所帮助。
在虹口等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站建设、成都网站建设 网站设计制作按需求定制设计,公司网站建设,企业网站建设,品牌网站设计,成都全网营销,成都外贸网站建设,虹口网站建设费用合理。
DB2存储过程中的指针循环:
DB2存储过程有2种那个方式:for循环和while循环,如:
for循环:
- for c1 as select deliveryid,deliverycode from delivery where status=40 for read only do
- select sum(qty) into dQty from deliverydetail where deliveryid=c1.deliveryid;
- ......
- end for;
while循环:
- declare c1 cursor for select deliveryid,deliverycode from delivery where status=40 for read only ;
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET at_end_c1 = 1;
- set at_end_c1=0;
- open c1 ;
- FETCH c1 INTO ndeliveryid ,sdeliverycode;
- WHILE ( at_end_c1 = 0) do
- select sum(qty) into dQty from deliverydetail where deliveryid=ndeliveryid ;
- ...
- set at_end_c1=0;
- FETCH c1 INTO ndeliveryid ,sdeliverycode;
- END while ;
- close c1;
很明显,for循环比while循环简单很多
而且,对于while循环,如果不注意,很容易出现死循环
一般建议使用for循环.
但是,有时候必须使用while循环。
如果在循环中有事务,比如在循环中有一块要求独立事务,对于那一块,如果执行成功 ,就提交这一块,如果执行不成功,就回滚这一块,继续下一个循环,之时候就只能用while循环。
因为,当commit的时候,会自动关闭当前指针。
在while循环中,如果要commit而不关闭当前指针,要在定义指针的时候加with hold,上面的指针定义为:
- declare c1 cursor with hold for select deliveryid,deliverycode from delivery where status=40 for read only ;
对于for循环是没有办法处理的。
如果需要用rollback,需要定义savepoint,然后回滚到指定的回滚点。
【编辑推荐】
DB2创建数据库的实现
DB2目录视图说明
DB2数据库命令大全
DB2装入命令的性能因素
DB2列转行的实现
分享名称:DB2存储过程中的两种指针循环方式
网页链接:http://www.shufengxianlan.com/qtweb/news6/485106.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联