【发布时间】:2017-05-31 10:45:13
【问题描述】:
这个问题只是出于好奇。我试图找出当没有为游标指定退出条件时会发生什么。获取最后一条记录后会发生什么。光标会指向第一条记录还是指向空白内存区域?为此,我创建了一个具有以下结构的测试表。
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 的所有行之后,游标再次指向第一行,但此后似乎没有进行获取。我不明白为什么 cursor 在表的第二次迭代期间无法获取第二行和后续行。
【问题讨论】:
-
你是如何“中断操作”的?
-
在sql developer中我取消了任务进度窗口中的操作