oracle捕获并抛出异常

2018-12-13  本文已影响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行报错了。

错误信息如下:

上一篇下一篇

猜你喜欢

热点阅读