要保证不中断,需要用游标,单个记录进行插入,异常记录插入错误信息表
declare
begin
for rec in (select * from b) loop
insert into a
select * from b where ...;
exception when otherst then
insert into err_msg
select * from b where ...;
end;
end loop;
先建一个错误跟踪表
create sequence s_error_id;
CREATE TABLE ERROR_RECORD
(
ERROR_ID NUMBER(10) primary key,
ERROR_CODE NUMBER(10),
ERROR_DATE DATE,
);
--------在过程的例外里向跟踪表写入错误信息:
create or replace procedure day_task is
v_sqlcode ERROR_RECORD.ERROR_CODE%type;
v_msg ERROR_RECORD.error_msg%type;
------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');
异常是执行这个存储过程出的异常吧,那就是说只有执行一次这个存储过程才会抛一次异常么?如果这样我建议你可以再写个存储过程来调用你这个存储过程,这样来记录异常的次数.然后再进行处理!
以上就是土嘎嘎小编为大家整理的oracle如何写异常处理相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!