在存储过程中,我一般是把SQL放在一个字符串变量里,然后执行这个串,如果报错,直接把该变量保存.但是有些SQL超级长,不适合用这种方法,我想问的是ORACLE有没有一些自带的变量保存出错的SQL,类似SQLCODE, SQLERRM这样的系统变量?

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE proc_add_ig_auth(o_code OUT VARCHAR2,o_msg OUT VARCHAR2)
    AS
    v_num number(10);
    begin 
     select 'adb' into v_num from dual;
    EXCEPTION
       WHEN OTHERS
       THEN                                                             --异常处理
          ROLLBACK;
          o_msg := SQLERRM;
          v_code := SQLCODE;
    END proc_add_ig_auth;
    SQLERRM和SQLCODE
      

  2.   

    哦,看错.
    你要保存的话,需要自己创建log表,在exception里把sql写到log表里.