oracle 存储过程异常处理

想把存储过程中的异常信息,存储到另外一个表里,不知道怎么需要哪些语句?异常信息表里的参数怎么写,前辈们救救,我是小白。给写具体语句,感激不尽createorreplace... 想把存储过程中的异常信息,存储到另外一个表里,不知道怎么需要哪些语句?异常信息表里的参数怎么写,前辈们救救,我是小白。给写具体语句,感激不尽
create or replace procedure day_task is
begin
update_user_zt;
end update_data;
展开
 我来答
greenhill9
推荐于2017-11-25 · 超过37用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:106万
展开全部
先建一个错误跟踪表
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;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dngoryaner
2013-01-07 · TA获得超过2350个赞
知道小有建树答主
回答量:2404
采纳率:0%
帮助的人:1120万
展开全部
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
);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式