-- 最好在存储过程的结尾加个显式提交!
SQL> create table dept10 as select * from dept where 1=2;
表已创建。
SQL> create table dept20 as select * from dept where 1=2;
表已创建。
SQL> create table dept30 as select * from dept where 1=2;
表已创建。
SQL> create or replace procedure mypro
2 as
3 cursor cur_deptno is select * from dept;
4 deptInfo dept%rowtype;
5 begin
6 for deptInfo in cur_deptno loop
7 if deptInfo.deptno=10 then
8 insert into dept10 values(deptInfo.deptno,deptInfo.dname,deptInfo.loc);
9 elsif deptInfo.deptno=20 then
10 insert into dept20 values(deptInfo.deptno,deptInfo.dname,deptInfo.loc);
11 elsif deptInfo.deptno=30 then
12 insert into dept30 values(deptInfo.deptno,deptInfo.dname,deptInfo.loc);
13 end if;
14 end loop;
15 end;
16 /
过程已创建。
SQL> exec mypro;
PL/SQL 过程已成功完成。
SQL> select * from dept10;
DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK
已选择 1 行。
SQL> select * from dept20;
DEPTNO DNAME LOC
20 RESEARCH DALLAS
已选择 1 行。
SQL> select * from dept30;
DEPTNO DNAME LOC
30 SALES CHICAGO
已选择 1 行。
SQL> rollback;
回退已完成。
SQL> select * from dept10;
未选定行