Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1213408
  • 博文数量: 398
  • 博客积分: 10110
  • 博客等级: 上将
  • 技术积分: 4055
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-23 20:01
个人简介

新博客http://www.cnblogs.com/zhjh256 欢迎访问

文章分类

全部博文(398)

文章存档

2012年(1)

2011年(41)

2010年(16)

2009年(98)

2008年(142)

2007年(100)

我的朋友

分类: Oracle

2008-01-06 21:30:47

发生错误的位置

loop

           fetch wainwright_Cur bulk collect into wainwright_var limit 1000;

             for i in wainwright_var.first..wainwright_var.last

       错误行为for i in,可能是因为游标没有行返回。

       可以考虑使用以下形式:

         FOR i IN NVL(v_rec.first,0) .. NVL(v_rec.last,-1) LOOP

       使用这种方式不会发生错误。

 

       或者先进行判断,如下:

         IF v_rec.count > 0 THEN

              for i in wainwright_var.first..wainwright_var.last

       使用这种方法通常更好,因为NVL会增加每次循环的额外负载。

 

       还可以使用以下方法,不需要额外的判断;

         fetch wainwright_Cur bulk collect into wainwright_var limit 1000;

for i in 1..wainwright_var.count LOOP

       不过不推荐,语义不是很好。

阅读(1893) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~