亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

光標的退出寫在fetch語句前面,為什么會出現重復記錄???

fetch cemp into pename,psal;?

??EXIT when cemp%notfound;?

與?

EXIT when cemp%notfound; ?

fetch cemp into pename,psal;?

得出的結果不一樣,這是為什么?

?第一種方式結果如下:

?... MILLER的薪水是:1300?

第二種結果如下:

?... MILLER的薪水是:

1300 MILLER的薪水是:

1300?

第二種最后一條記錄重復出現兩次是何原因?

正在回答

3 回答

fetch是用來提取游標數據的,你這樣寫,會多一次提取數據的機會

0 回復 有任何疑惑可以回復我~

set serveroutput on

declare

cursor s is select ename from emp;

pename emp.ename%type;

begin

open s;

loop

exit when s%notfound;

dbms_output.put_line('before:'||pename);

fetch s into pename;

dbms_output.put_line('after:'||pename);

end loop;

close s;

end;

/

輸出結果:

before:

after:SMITH

before:SMITH

after:ALLEN

before:ALLEN

after:WARD

before:WARD

after:JONES

before:JONES

after:MARTIN

before:MARTIN

after:BLAKE

before:BLAKE

after:CLARK

before:CLARK

after:KING

before:KING

after:TURNER

before:TURNER

after:JAMES

before:JAMES

after:FORD

before:FORD

after:MILLER

before:MILLER

after:MILLER

第一次判斷沒跳轉,只是證明表里有記錄,在取值之前一直是上一條數據的記錄。

set serveroutput on

declare

cursor s is select ename from emp;

pename emp.ename%type;

num number:= 16;

begin

open s;

loop

exit when num<0;

dbms_output.put_line('before:'||pename);

fetch s into pename;

dbms_output.put_line('after:'||pename);

num := num -1;

end loop;

close s;

end;

/

輸出結果:

before:

after:SMITH

before:SMITH

after:ALLEN

before:ALLEN

after:WARD

before:WARD

after:JONES

before:JONES

after:MARTIN

before:MARTIN

after:BLAKE

before:BLAKE

after:CLARK

before:CLARK

after:KING

before:KING

after:TURNER

before:TURNER

after:JAMES

before:JAMES

after:FORD

before:FORD

after:MILLER

before:MILLER

after:MILLER

before:MILLER

after:MILLER

before:MILLER

after:MILLER

before:MILLER

after:MILLER

before:MILLER

after:MILLER

證明fetch跳到最后一條記錄以后就不會再報NULL值了,而是一直保存最有一個值。

綜上所述:循環多執行了一遍,最后一個值被多打印了一次!希望對你有幫助!

0 回復 有任何疑惑可以回復我~

可能是光標取值之后,何時會跳轉到下一條記錄,跟這個有關,就是在最后一次判斷的時候光標還沒有跳到下一條記錄。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

光標的退出寫在fetch語句前面,為什么會出現重復記錄???

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號