复制 表 数据 到另一张桌子 并将失败的数据复制到另一个表
注意:在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;
答案 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