美文网首页
oracle捕获并抛出异常

oracle捕获并抛出异常

作者: 清_晨_ | 来源:发表于2018-12-13 20:34 被阅读7次

    写一个测试用例,用存储过程捕获异常并抛出异常,定位异常信息。

    1.新建一张表
    create table cqh_log (
    p_error   VARCHAR2(3000),
    p_sqlerrm VARCHAR2(3000),
    p_time    VARCHAR2(1000)
    )
    
    2.新新建一个测试的存储过程
    create or replace procedure testprc  IS
      V_NO           VARCHAR2(1);
      v_err_msg      VARCHAR2(1000);  ---错误信息
      p_error        VARCHAR2(1000);    --错误行
      error_code     VARCHAR2(1000);  --错误代码
    BEGIN
      select 'NUMBER' into V_NO from dual;
    exception
      when others then
      v_err_msg := SUBSTR(SQLERRM, 1, 512); --错误信息
      p_error   := dbms_utility.format_error_backtrace(); --错误行
      error_code := sqlcode;
      insert into cqh_log
      (p_error,p_sqlerrm,p_time,p_sqlcode) 
      values (p_error,v_err_msg,  to_char(sysdate, 'YYYY-MM-DD HH:MI:SS'),error_code);
      commit;
    end testprc;
    

    调用此过程后,会报ORA-06502这个错误,错误信息如下:ORA-06502: PL/SQL: numeric or value error: character string buffer too small,最后我们可以在日志表中看到错误定位的行:ORA-06512: at "SYSTEM.TESTPRC", line 7说明过程的第7行报错了。

    错误信息如下:

    相关文章

      网友评论

          本文标题:oracle捕获并抛出异常

          本文链接:https://www.haomeiwen.com/subject/agtihqtx.html