Oracle : 8.1.7
Unix : HP/UX B11

J'essaye de Faire la manip suivante : Faire un BULK COLLECT Vers Un TYPE basé sur un Curseur

Mais Msieur Oracle n'est pas d'accord : Avez vous une idée



Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
  1  Declare
  2
  3     /**********************************************************************/
  4     /*      Extraction des Commandes d'une Cliente                        */
  5     /**********************************************************************/
  6     Cursor Cur_temp_cde (w_pays varchar2, w_client varchar2 ,w_date_lim date) IS
  7     select
  8     pay_cd, cde_no, cli_no, pla_cde,
  9     mai_cd, cde_dt_facture
 10     from COMMANDE
 11     WHERE CLI_PAY_CD = w_pays
 12     AND CLI_NO = w_client
 13     AND CDE_DT_FACTURE >= w_date_lim
 14     order by CDE_DT_FACTURE DESC;
 15
 16     TYPE TYP_TAB_CDE IS TABLE OF Cur_temp_cde%ROWTYPE;
 17
 18     t_rec TYP_TAB_CDE;
 19
 20  Begin
 21      OPEN Cur_temp_cde ('001','12345789',sysdate - 1000);
 22      loop
 23         ---------------------------------------------------------
 24         --
 25         ---------------------------------------------------------
 26         FETCH Cur_temp_cde BULK COLLECT into t_rec LIMIT 15;
 27         For i In t_rec.first..t_rec.last Loop
 28              -- Insertion Dans Commande_bis
 29              null;
 30         End loop ;
 31         Exit When Cur_Temp_Cde%NOTFOUND ;
 32      end loop;
 33* End;
/
L'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
SQL> /
       FETCH Cur_temp_cde BULK COLLECT into t_rec LIMIT 15;
                                            *
ERREUR à la ligne 26 :
ORA-06550: Ligne 26, colonne 45 :
PLS-00597: l'expression 'T_REC' dans la liste INTO est de type incorrect
ORA-06550: Ligne 26, colonne 8 :
PL/SQL:SQL Statement ignored
Merci de votre aide