PL/SQL异常处理:

Posted Tomatoes

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PL/SQL异常处理:相关的知识,希望对你有一定的参考价值。

如果在PLSQL块中没有做异常处理,在执行PLSQL块时,出现异常,会传递到调用环境,导致程序运行出错!

[email protected] prod> declare
   2  
   3   v_ename emp.ename%type;
   4   v_sal   emp.sal%type;
   5  
   6  begin
   7    
   8    select ename,sal into v_ename,v_sal from emp where deptno=&n;
   9    
  10    dbms_output.put_line(v_ename||:||v_sal);
  11    
  12  
  13  end;

1.预定义异常:
TOO_MANY_ROWS  在隐式游标处理时,select 返回行数超过一行

SQL> declare
  2  
  3   v_ename emp.ename%type;
  4   v_sal   emp.sal%type;
  5  
  6  begin
  7  
  8    select ename,sal into v_ename,v_sal from emp where deptno=&n;
  9  
 10    dbms_output.put_line(v_ename||:||v_sal);
 11  
 12  exception
 13    when too_many_rows then
 14         dbms_output.put_line(You return rows more than one !);
 15    when others  then
 16         dbms_output.put_line(Other‘‘s error !);
 17  end;

2.NO_DATA_FOUND   在访问数据时,没有发现数据。

SQL> declare
  2  
  3   v_ename emp.ename%type;
  4   v_sal   emp.sal%type;
  5  
  6  begin
  7  
  8    select ename,sal into v_ename,v_sal from emp where empno=#
  9  
 10    dbms_output.put_line(v_ename||:||v_sal);
 11  
 12  exception
 13    when no_data_found then
 14         dbms_output.put_line(No data found ,Please input correct number !);
 15    when others  then
 16         dbms_output.put_line(Other‘‘s error !);
 17  end;

3.ZERO_DIVIDE   除数为零

SQL> declare
  2  
  3    v_num1 number :=10;
  4    v_num2 number ;
  5    v_num3 number;
  6  
  7  begin
  8     v_num2 := &nn;
  9  
 10     v_num3 := v_num1 / v_num2 ;
 11  
 12     dbms_output.put_line( Number is : ||v_num3);
 13  exception
 14      when zero_divide then
 15       dbms_output.put_line( Divisor is equal to zero,Please input correct Number !);
 16      when others  then
 17      dbms_output.put_line(Other‘‘s error !);
 18  end;

 



以上是关于PL/SQL异常处理:的主要内容,如果未能解决你的问题,请参考以下文章

检查 PL/SQL 异常块中的特定错误代码

PL/SQL 找不到数据异常处理

PL/SQL 中的异常处理。 [关闭]

PL/SQL 在 for 循环中执行即时异常处理

动态 SQL/异常处理 -00942 - Oracle PL/SQL [重复]

使用 pl/sql 过程记录错误和处理异常