oracle 存储过程异常处理

发布网友

我来回答

2个回答

热心网友

先建一个错误跟踪表
create sequence s_error_id;
CREATE TABLE ERROR_RECORD
(
ERROR_ID NUMBER(10) primary key,
ERROR_CODE NUMBER(10),
ERROR_MSG VARCHAR2(2000),
ERROR_DATE DATE,
ERROR_PROGRAM VARCHAR2(200)
);
--------在过程的例外里向跟踪表写入错误信息:
create or replace procere day_task is
v_sqlcode ERROR_RECORD.ERROR_CODE%type;
v_msg ERROR_RECORD.error_msg%type;
begin
------program body
exception when others then
--记录错误信息表
v_sqlcode :=sqlcode;
v_msg :=sqlerrm;
insert into error_record(error_code,error_msg,error_date,error_program)
values (v_sqlcode,v_msg,sysdate,‘day_task’);
end;

热心网友

create or replace procere day_task is
l_err varhcar2(1000);
begin

update table set aaa='aaa' where tableId=1;
--正确的,
EXCEPTION
WHEN OTHERS THEN
如果错误出有个SQLERRM。把它存储就知道错误了
l_err := SUBSTR(SQLERRM, 1, 100);

INSERT INTO ERROR_TABLE
VALUES
('标识', l_err, CURRENT_DATE);

RAISE;
END;

CREATE TABLE ERROR_TABLE
(
IDF VARHCAR2(50),
ERR_MAG VARCHAR2(500),
DATE DATE
);

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com