--执行insert时,可以定义一个record,将record插入到相应的表中
SQL> select * from test;
未选定行
SQL> declare
2 test_rec test%rowtype;
3 begin
4 test_rec.id :=2;
5 insert into test values test_rec;
6 end;
7 /
PL/SQL 过程已成功完成。
SQL> select * from test;
ID Q WEIGHT
---------- - ----------
2
--同样,可以在update时,指定一个record,如下:
SQL> declare
2 test_rec test%rowtype;
3 begin
4 test_rec.QUALITY :='H';
5 test_rec.weight :=100;
6 UPDATE test SET ROW=test_rec WHERE id=2;
7 end;
8 /
PL/SQL 过程已成功完成。
SQL> select * from test;
ID Q WEIGHT
---------- - ----------
H 100
--delete时将删除的数据存放到一个table类型中,然后insert到另外一个表中:
SQL> create table t as select * from test where 1=2;
表已创建。
SQL> select * from t;
未选定行
SQL> declare
2 type test_rec is table of test%rowtype;
3 test_tab test_rec;
4 begin
5 delete from test where id=1 RETURNING id,QUALITY,weight
6 bulk collect into test_tab;
7 if test_tab.last is not null then
8 forall i in 1 .. test_tab.last
9 -- dbms_output.put_line(i);
10 insert into t values test_tab(i);
11 end if;
12 end;
13 /
PL/SQL 过程已成功完成。
SQL> select * from t;
ID Q WEIGHT
---------- - ----------
1 A 100
--将select出来的数据放到table类型的变量中
SQL> declare
2 type t_rec1 is table of t%rowtype;
3 t_tab1 t_rec1;
4 cursor c1 is select id,weight from t where id<3;
5 type t_rec2 is table of c1%rowtype;
6 t_tab2 t_rec2;
7 begin
8 --将表t中的数据放到t_tab1中
9 select * bulk collect into t_tab1 from t;
10 DBMS_OUTPUT.PUT_LINE('t_tab1中的记录数:'||t_tab1.count);
11 --输出t_tab1中的记录
12 FOR i in t_tab1.FIRST .. t_tab1.LAST
13 loop
14 dbms_output.put_line('ID: '||t_tab1(i).id||',QUALITY: '||t_tab1(i).QUALITY||',WEIGHT: '||t_tab1(i).weight);
15 end loop;
16 --将表t中的部分数据放到t_tab2中
17 select id,weight bulk collect into t_tab2 from t;
18 DBMS_OUTPUT.PUT_LINE('t_tab2中的记录数:'||t_tab2.count);
19 for i in t_tab2.first .. t_tab2.last
20 loop
21 dbms_output.put_line('ID: '||t_tab2(i).id||',WEIGHT: '||t_tab2(i).weight);
22 end loop;
23 end ;
24 /
t_tab1中的记录数:10
ID: 1,QUALITY: A,WEIGHT: 100
ID: 2,QUALITY: A,WEIGHT: 2
ID: 3,QUALITY: A,WEIGHT: 3
ID: 4,QUALITY: A,WEIGHT: 4
ID: 5,QUALITY: A,WEIGHT: 5
ID: 6,QUALITY: A,WEIGHT: 6
ID: 7,QUALITY: A,WEIGHT: 7
ID: 8,QUALITY: A,WEIGHT: 8
ID: 9,QUALITY: A,WEIGHT: 9
ID: 10,QUALITY: A,WEIGHT: 10
t_tab2中的记录数:10
ID: 1,WEIGHT: 100
ID: 2,WEIGHT: 2
ID: 3,WEIGHT: 3
ID: 4,WEIGHT: 4
ID: 5,WEIGHT: 5
ID: 6,WEIGHT: 6
ID: 7,WEIGHT: 7
ID: 8,WEIGHT: 8
ID: 9,WEIGHT: 9
ID: 10,WEIGHT: 10
PL/SQL 过程已成功完成。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10972173/viewspace-708492/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10972173/viewspace-708492/