---------------------------------------------------------------------- SQL> begin 2 for i in 1 .. 50000 3 loop 4 insert into t1 values(i,'a'); 5 commit; 6 end loop; 7 end; 8 / PL/SQL procedure successfully completed. SESSION 1: 执行 1 declare 2 cursor cur1 IS 3 select a.rowid,a.id from t1 a; 4 begin 5 for row in cur1 loop 6 DBMS_OUTPUT.PUT_LINE('last name: '||row.ID||'--'||row.ROWID); 7 end loop; 8* end; 开始执行后 在SESSION 2: insert into t1 values(99999999,'xxxx'); commit; 此时查看SESSION 1的spool日志:
last name: 49986--AAATA1AAEAAAE7GAAi last name: 49987--AAATA1AAEAAAE7GAAj last name: 49988--AAATA1AAEAAAE7GAAk last name: 49989--AAATA1AAEAAAE7GAAl last name: 49990--AAATA1AAEAAAE7GAAm last name: 49991--AAATA1AAEAAAE7GAAn last name: 49992--AAATA1AAEAAAE7GAAo last name: 49993--AAATA1AAEAAAE7GAAp last name: 49994--AAATA1AAEAAAE7GAAq last name: 49995--AAATA1AAEAAAE7GAAr last name: 49996--AAATA1AAEAAAE7GAAs last name: 49997--AAATA1AAEAAAE7GAAt last name: 49998--AAATA1AAEAAAE7GAAu last name: 49999--AAATA1AAEAAAE7GAAv last name: 50000--AAATA1AAEAAAE7GAAw
PL/SQL procedure successfully completed.
没有SESSION 2上的: select rowid ,t1.* from t1 where t1.id=99999999; ROWID ID NAME ------------------ ---------- ---------- AAATA1AAEAAAE7fAAC 99999999 xxxx 没有后来插入的t1.id=99999999的信息 实验说明:返回的结果集在打开的那一刻(时间点)就已经确定 ------------------------------------------------------------