| 12
 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
 
 |  
 
SQL> create table TableClient (nom varchar2(16), prenom varchar2(16), adresse varchar2(16),
  2   codepostal varchar2(16), ville varchar2(16));
 
Table créée.
 
SQL> insert into TableClient values ('MACHIN','TOTO','rue truc','44000','NANTES');
 
1 ligne créée.
 
SQL> insert into TableClient values ('bidule','titi','bd du truc','33000','Bordeaux');
 
1 ligne créée.
 
SQL> commit;
 
Validation effectuée.
 
SQL> create package pkgType is
  2    TYPE Type_Test is ref cursor;
  3    end pkgType;
  4  /
 
Package créé.
 
SQL> create Procedure Test (F_Test out pkgType.Type_Test,
  2                           pNom IN TableClient.Nom%type)
  3      IS
  4      Str_chaine varchar2(1000);
  5      Str_table varchar2(20);
  6      begin
  7      Str_table:='TableClient';
  8      Str_chaine :=' Select nom, prenom, adresse, codepostal, ville '||
  9      ' From ' || Str_table ||
 10     ' Where nom = :pNom';
 11     Open F_Test for str_chaine using pNom;
 12     end;
 13  /
 
Procédure créée.
 
SQL> var CC REFCURSOR;
SQL> BEGIN
  2      Test (:CC,'MACHIN');
  3      END;
  4  /
 
Procédure PL/SQL terminée avec succès.
 
SQL> print CC
 
NOM              PRENOM           ADRESSE          CODEPOSTAL
---------------- ---------------- ---------------- ----------------
VILLE
----------------
MACHIN           TOTO             rue truc         44000
NANTES
 
 
SQL> |