新博客http://www.cnblogs.com/zhjh256 欢迎访问
分类: 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
不过不推荐,语义不是很好。