当PL / SQL中%NOTFOUND为NULL时

时间:2014-05-30 21:21:55

标签: sql oracle plsql plsqldeveloper

你能帮助我吗! 我有一个PL / SQL程序

`DECLARE
//DECLARION OF CURSOR
BEGIN
OPEN cur_emp:
LOOP
FETCH cur_emp INTO ...;
EXIT WHEN cur_emp%NOTFOUND;
END LOOP;
END;
/    `

问题是这个循环是无限的吗? 谢谢

1 个答案:

答案 0 :(得分:0)

Oracle关于游标属性的文档解决了这种无限循环风险。 Oracle手册的答案是:“如果FETCH永远不会成功执行,则EXIT WHEN条件永远不会为TRUE,并且永远不会退出循环。”倡导的方法如下:

EXIT WHEN cur_emp%NOTFOUND OR cur_emp%NOTFOUND IS NULL 

这将解决从未成功执行fetch的NULL场景。