この質問は好奇心に溢れています。カーソルの終了条件が指定されていないときに何が起こるかを調べようとしています。最後のレコードが取得された後はどうなりますか?カーソルが最初のレコードを指すか、空白のメモリ領域をポイントしますか?このために、以下の構造のテストテーブルを作成しました。カーソルの無限ループ
create table CURSOR_TEST
(col1 number,col2 NUMBER
);
と以下の終了条件なしで私の無名ブロックである
declare
cursor CUR is select EMPNO from EMP;
v1 number;
begin
open CUR;
loop
fetch CUR into V1;
insert into CURSOR_TEST values(s.nextval,V1);
commit;
end loop;
close CUR;
end;
それが無限ループであるように、私は間で運転を解除する必要があります。この後、テーブルのレコードをチェックすると、empのすべての行がフェッチされた後、カーソルが最初の行を再びポイントしているが、フェッチがこの後に起こっていないように見えます。私はカーソルがテーブルの2番目の反復の間に2番目以降の行をフェッチできない理由を理解できませんでした。
「どのように操作を中断しましたか」 – APC
sqlの開発者では、タスクの進行状況ウィンドウで操作をキャンセルしました。 – PTK