【问题标题】:Infinite loop with sql cursor (Oracle 10)带有 sql 游标的无限循环 (Oracle 10)
【发布时间】:2015-04-28 17:29:03
【问题描述】:
我有一个无限循环的光标:
DECLARE
CURSOR cursor_ab IS
SELECT num_ab FROM abonne;
BEGIN
OPEN cursor_ab;
LOOP
FETCH cursor_ab INTO numeroAb;
dbms_output.put_line(numeroAb);
END LOOP;
CLOSE cursor_ab;
END;
/
你有什么想法吗?
谢谢,
【问题讨论】:
标签:
sql
oracle
cursor
plsqldeveloper
【解决方案1】:
前面已经指出,这样写循环的时候,需要指定退出条件:
DECLARE
CURSOR cursor_ab IS
SELECT num_ab FROM abonne;
BEGIN
OPEN cursor_ab;
LOOP
FETCH cursor_ab INTO numeroab;
EXIT WHEN cursor_ab%NOTFOUND;
DBMS_OUTPUT.put_line (numeroab);
END LOOP;
CLOSE cursor_ab;
END;
/
但是,您可以在 PL/SQL 中通过让循环管理游标来完成同样的事情:
DECLARE
CURSOR cursor_ab IS
SELECT num_ab FROM abonne;
BEGIN
FOR numeroab IN cursor_ab LOOP
DBMS_OUTPUT.put_line (numeroab.num_ab);
END LOOP;
END;
/
【解决方案2】:
你需要出口:
当 cursor_ab%NOTFOUND 时退出;
第