从品牌网站建设到网络营销策划,从策略到执行的一站式服务
异常是执行这个存储过程出的异常吧,那就是说只有执行一次这个存储过程才会抛一次异常么?如果这样我建议你可以再写个存储过程来调用你这个存储过程,这样来记录异常的次数。然后再进行处理!
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序制作、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了尖山免费建站欢迎大家使用!
不知道你想在什么环境下捕获,不知道你说的SQL是怎么捕获,或者你说的是脚本?
如果是在存储过程中捕获
有两个思路吧,
1、直接使用普通的异常处理,获取异常的代码,匹配是否为00942,然后就捕获到这个异常。
2、自定义异常处理,使用数据字典,首先查询数据字典中是否存在这表,如果不存在,就产生一个自定义的异常,在这个异常里你做处理。
------------------------------------------------------------------------------------
declare
myexception exception;
--表个数
v_num integer :=0;
begin
--查询表名为MY_USER表个数
SELECT count(*) into v_num FROM tabs WHERE table_name = 'MY_USER'
if v_num=0 then
raise myexception;
end if;
exception
when myexception then
raise_application_error(20001,'my exception happens');
when others then
raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
end
----------------------------------------------------------------------------------------
伪代码,你可以嵌到你的存储过程中去使用。
对于异常都是将异常信息插入到数据表里面,然后程序界面显示出来。
要保证不中断,需要用游标,单个记录进行插入,异常记录插入错误信息表
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;
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图