1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
SQL> create or replace package pkg_typ as
2 type curgen is ref cursor;
3 end;
4 /
Package créé.
SQL> CREATE TABLE t(x int);
Table créée.
SQL> CREATE TABLE t1(nt varchar2(30));
Table créée.
SQL> insert into T values (4);
1 ligne créée.
SQL> insert into T values (12);
1 ligne créée.
SQL> insert into t1 values('TOTO');
1 ligne créée.
SQL> insert into t1 values('TATA');
1 ligne créée.
SQL> create or replace function select_gen (in_table in varchar2) return pkg_typ.curgen is
2 l_curgen pkg_typ.curgen;
3 BEGIN
4 OPEN l_curgen for 'SELECT * from '||in_table;
5 RETURN l_curgen;
6 END;
7 /
Fonction créée.
SQL> var cur refcursor;
SQL> BEGIN
2 :cur := select_gen('t');
3 END;
4 /
Procédure PL/SQL terminée avec succès.
SQL> print cur
X
----------
4
12
SQL> BEGIN
2 :cur := select_gen('t1');
3 END;
4 /
Procédure PL/SQL terminée avec succès.
SQL> print cur
NT
------------------------------
TOTO
TATA
SQL> |