当PL/SQL中的%NOTFOUND为空时

当PL/SQL中的%NOTFOUND为空时,sql,oracle,plsql,plsqldeveloper,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; / ` 问题是这个循环何时是无限的? 感谢您Oracle关于游标属性的文档解决了这一无限循环风险。Oracle手册中的答案是,“如果FETCH从未成功执行,那么退出条件永远不会为真,循环也永远不会退出。

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

`DECLARE
//DECLARION OF CURSOR
BEGIN
OPEN cur_emp:
LOOP
FETCH cur_emp INTO ...;
EXIT WHEN cur_emp%NOTFOUND;
END LOOP;
END;
/    `
问题是这个循环何时是无限的?
感谢您

Oracle关于游标属性的文档解决了这一无限循环风险。Oracle手册中的答案是,“如果FETCH从未成功执行,那么退出条件永远不会为真,循环也永远不会退出。”推荐的方法如下:

EXIT WHEN cur_emp%NOTFOUND OR cur_emp%NOTFOUND IS NULL 

这将解决提取从未成功执行的空场景。

那么您是说此循环没有终止?这是一个标准的游标属性问题(手册中的右侧)。Oracle手册中的答案是,“如果FETCH从未成功执行,则在条件为“从未为真”时退出,并且循环从未退出。”提倡的方法是“在cur_emp%NOTFOUND或cur_emp%NOTFOUND为NULL时退出”这将解决提取从未成功执行的空场景。@Patrick-我每天都学到一些新东西。非常感谢。请将其作为答案发布,以便进行投票/接受。