oracle 存储过程异常处理
想把存储过程中的异常信息,存储到另外一个表里,不知道怎么需要哪些语句?异常信息表里的参数怎么写,前辈们救救,我是小白。给写具体语句,感激不尽createorreplace...
想把存储过程中的异常信息,存储到另外一个表里,不知道怎么需要哪些语句?异常信息表里的参数怎么写,前辈们救救,我是小白。给写具体语句,感激不尽
create or replace procedure day_task is
begin
update_user_zt;
end update_data; 展开
create or replace procedure day_task is
begin
update_user_zt;
end update_data; 展开
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 procedure 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 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 procedure 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 procedure 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
);
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
);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询