Oracle 存储过程 如何实现插入数据时出错后,但还继续执行

例如一个存储过程执行下面语句,ID是主键,
因为第三条会报错,所以我想将前两条插入table1
处理错误数据,将第三条插入table2
table1和table2表结构一样,如何实现?

insert into table1
select 1 as id,'Alex' as name,33.6 as total from dual
union all
select 2 as id,'Alex' as name,33.6 as total from dual
union all
select 1 as id,'Alex' as name,33.6 as total from dual

(这只是一个例子,主要意思是存储过程能加载进正确数据且不中断,把错误数据抛弃或者捕获到其他表里)

还有在Oracle中如果能实现,那么在Sql server中要怎么实现?
也希望指点一下,谢谢!!!

第1个回答  推荐于2017-09-04
begin
insert …… ;--可能出错的地方
exception
when others then
null;--出错后跳到这里来。

end;

将可能出错语句包裹起来,抓异常,不影响往下执行。
第2个回答  2013-05-21
一个SQL文肯定实现不了这个功能,你可以分成三个SQL执行,然后用exception捕捉异常。
SQL SERVER里处理也一样。
第3个回答  2013-05-23
可以考虑在执行这段代码的时候 try catch一下 或者是循环操作的方法 一出错continue一下
第4个回答  2013-05-26
用处理异常的方法就可以了啊
第5个回答  2013-05-23
可以考虑一下批处理