|
像下面这样分开,不用记录类型,肯定是可以的,只不过要分开定义:
SQL>
SQL> drop table t purge;
Table dropped
SQL> create table t(id int, val varchar2(10));
Table created
SQL> insert into t values (1,'a');
1 row inserted
SQL> insert into t values (2,'b');
1 row inserted
SQL> insert into t values (3,'c');
1 row inserted
SQL> commit;
Commit complete
SQL> DECLARE
2
3 TYPE t_tab IS TABLE OF t.id%type;
4 TYPE t_tab2 IS TABLE OF T.VAL%TYPE;
5 l_a t_tab;
6 l_b t_tab2;
7 BEGIN
8 EXECUTE IMMEDIATE 'UPDATE t
9 SET val= upper(val)
10 RETURNING id,val INTO :l_a,:l_b'
11 RETURNING
12 BULK COLLECT INTO l_a,l_b;
13
14 FOR i IN l_a.first .. l_a.last LOOP
15 DBMS_OUTPUT.put_line(l_a(i)||','||l_b(i));
16 END LOOP;
17
18 COMMIT;
19 END;
20 /
1,A
2,B
3,C
PL/SQL procedure successfully completed
SQL> |
|