我正在使用以下 PLSQL 循环从我的表中删除大量记录。但是,它给了我一个错误,即循环退出条件不正确。
FOR i IN 1..100
LOOP
DELETE
FROM mytable
WHERE date <= (SYSDATE - 30)
AND ROWNUM < 5000;
EXIT WHEN (SELECT COUNT(*)
FROM mytable
WHERE date <= (SYSDATE - 30)) = 0;
COMMIT;
END LOOP;
这里有什么问题?
它应该是一个简单的布尔值。这应该有效并且更有效。SQL%ROWCOUNT 属性将填充删除的行数。如果您没有删除任何内容,则只需退出。
如果您不熟悉隐式游标属性,请查看 Oracle 文档 - https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/sql_cursor.htm
编辑:刚刚注意到帖子的标题。该消息所指的出口是 SQL*Plus 的出口,因此我不确定您是否以正确的方式运行它。请发布所有代码并告诉我们这是如何运行的。