>데이터 베이스 >MySQL 튜토리얼 >pl/sql存储过程loop死循环

pl/sql存储过程loop死循环

WBOY
WBOY원래의
2016-06-07 17:25:301330검색

今早,一个存储过程,写过很多次的存储过程,随手一写,各种报错,各种纠结,网上一搜,有好多个都遇到,论坛上给出的结局答案,

今早,一个存储过程,写过很多次的存储过程,随手一写,各种报错,各种纠结,网上一搜,有好多个都遇到,论坛上给出的结局答案,都没说到点上,先看一下原程序,我注释掉的部分是我缺少的跳出循环语句。

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服务,把这个服务开启,服务就可以在控制台打印输出的内容。显然这个错误指的是缓冲溢出,很容易联想到死循环这样的错误导致,可惜一时没想出来,现在总结一下,谨记!

linux

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.