今早,一个存储过程,写过很多次的存储过程,随手一写,各种报错,各种纠结,网上一搜,有好多个都遇到,论坛上给出的结局答案,
今早,一个存储过程,写过很多次的存储过程,随手一写,各种报错,各种纠结,网上一搜,有好多个都遇到,论坛上给出的结局答案,都没说到点上,先看一下原程序,我注释掉的部分是我缺少的跳出循环语句。
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中文网,转载请注明出处,感谢您的尊重!