日期:2014-05-17  浏览次数:20919 次

请教 plsql中如何显式的抛出异常??
RT,现在有一个需求,如果遇到某种条件的话,程序就需要跳转到某个已经定义的异常上去?
请问plsql中如何实现呢??感谢各位指点

------解决方案--------------------
oracle中,允许使用“RAISE_APPLICATION_ERROR”函数产生一个用户自定义的错误,使得事务进入异常处理
PROCEDURE RAISE_APPLICATION_ERROR( error_number_in IN NUMBER, error_msg_in IN VARCHAR2);
error_number_in 之容许从 -20000 到 -20999 之间
在开发存储过程或者pl sql时,可以根据需要随时产生 SQL错误,并在事务中使用
exception语句处理指定错误号的后续工作
------解决方案--------------------
SQL code
SQL> CREATE OR REPLACE PROCEDURE pb IS
  2    invalid_data EXCEPTION;
  3    PRAGMA EXCEPTION_INIT(invalid_data, -20100);
  4    v_sqlerrm VARCHAR2(2000);
  5  BEGIN
  6    IF TRUE THEN
  7      RAISE_APPLICATION_ERROR(-20100, 'Invalid Registration');
  8    END IF;
  9  EXCEPTION
 10    WHEN invalid_data THEN
 11      v_sqlerrm := SQLERRM;
 12      dbms_output.put_line(v_sqlerrm);
 13  END;
 14  /

过程已创建。

SQL> 
SQL> SET serveroutput ON;
SQL> exec pb;
ORA-20100: Invalid Registration

PL/SQL 过程已成功完成。

SQL>