从品牌网站建设到网络营销策划,从策略到执行的一站式服务
要保证不中断,需要用游标,单个记录进行插入,异常记录插入错误信息表
创新互联专注于武川网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供武川营销型网站建设,武川网站制作、武川网页设计、武川网站官网定制、重庆小程序开发服务,打造武川网络公司原创品牌,更为您提供武川网站排名全网营销落地服务。
declare
begin
for rec in (select * from b) loop
begin
insert into a
select * from b where ...;
exception when otherst then
insert into err_msg
select * from b where ...;
end;
end loop;
end;
很显然在p2中 异常exp1没有定义,而p1中 exp1进行过初始化, 所以p1认识exp1,erp2不认识(将其当做其它)
你可以给exp1定义一个异常号码,这样在p2中截获异常时通过对异常号码进行判断。
或者把他们放到一个oracle包中,将exp1 定义为 包变量,这样p1中初始化过exp1,p2中也可以使用了。
先建一个错误跟踪表
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;
异常是执行这个存储过程出的异常吧,那就是说只有执行一次这个存储过程才会抛一次异常么?如果这样我建议你可以再写个存储过程来调用你这个存储过程,这样来记录异常的次数。然后再进行处理!
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图