各位:
   
  现在我有个需求,需要自定义一个ORACLE 异常,根据特定的错误,抛出特定的错误号。并且此异常和接收oracle其一系统异常一样的接收。比如直接接收sqlcode和sqlerrm
比如:凡是以‘test_id’做为唯一约束字段的表,如果报唯一约束错误,均抛出错误99999.

解决方案 »

  1.   

    这个在存储过程输出字段里增加错误码应该就可以吧,在输出里增加errorcode,判断接收到oracle的test_id唯一约束错误,就转化成自己的错误码返回就行吧
      

  2.   

    SQL> set serveroutput on
    SQL> 
    SQL> DECLARE
      2     number_on_hand NUMBER := 0;
      3  BEGIN
      4     IF number_on_hand < 1 THEN
      5        RAISE_APPLICATION_ERROR(-20101, 'salary is missing');
      6   -- raise an exception
      7     END IF;
      8  EXCEPTION
      9     WHEN others THEN
     10        -- handle the error
     11        DBMS_OUTPUT.PUT_LINE(Sqlerrm);
     12        DBMS_OUTPUT.PUT_LINE(Sqlcode);
     13  END;
     14  /
     
    ORA-20101: salary is missing
    -20101
     
    PL/SQL procedure successfully completed
     
    SQL>