今早,一個存儲過程,寫過很多次的存儲過程,隨手一寫,各種報錯,各種糾結,網上一搜,有好多個都遇到,論壇上給出的結局答案,
今早,一個存儲過程,寫過很多次的存儲過程,隨手一寫,各種報錯,各種糾結,網上一搜,有好多個都遇到,論壇上給出的結局答案,都沒說到點上,先看一下原程序,我注釋掉的部分是我缺少的跳出循環語句。
declare
type cur_type is ref cursor;
cur_emp cur_type;
r_emp emp%rowtype;
v_sql varchar2(500);
begin
v_sql:='select * from emp where sal>:sal';
open cur_emp for v_sql using &請輸入工資:;
loop
fetch cur_emp into r_emp;
--exit when cur_emp%notfound;
dbms_output.put_line(r_emp.ename||'-'||r_emp.sal);
end loop;
close cur_emp;
end;
Oracle報錯:
突然間,我就發現了這個少了跳出循環的一步,那錯誤很簡單,關鍵是這個報錯,網上說set serveroutput size 100000000,或者serveroutput設置大一點,或者這樣的set serveroutput on size unlimited,都試了,不可以。serveroutput就是pl/sql語言的dbms_output服務,把這個服務開啟,服務就可以在控制臺打印輸出的內容。顯然這個錯誤指的是緩沖溢出,很容易聯想到死循環這樣的錯誤導致,可惜一時沒想出來,現在總結一下,謹記!
,
本文原創發布php中文網,轉載請注明出處,感謝您的尊重!