如何将失败的数据移动到oracle中的另一个表?

时间:2018-07-07 17:38:58

标签: sql oracle plsql

复制 表 数据 到另一张桌子 并将失败的数据复制到另一个表

注意:在emp2表中有一个检查约束check sal > 1500,因此它不会移动数据。

我想将emp以上的1500 sal都从emp复制到emp2,然后将1500以下的sal复制到另一个表中。

create or replace procedure p1 is cursor c1 is
  select * from emp;
  c number(10); 
begin
  for i in c1 loop
    insert into emp2(ename,ssno,empno) values(i.ename,i.sal,i.empno); 
end loop; 
end;

1 个答案:

答案 0 :(得分:2)

两个步骤:

insert into ok_data (ename, ssno, empno, sal)
  select ename, ssno, empno, sal
  from emp
  where sal <= 1500;

insert into failed_data (ename, ssno, empno, sal)
  select ename, ssno, empno, sal
  from emp
  where sal > 1500;

正如您的评论所建议的那样,PL / SQL应该带有一个循环,然后该循环应包含其自己的BEGIN-EXCEPTION-END块,这样-一旦插入OK_DATA失败,异常处理部分会将数据插入{{ 1}}表。像这样:

FAILED_DATA