Bonjour,
j'ai un souci avec la déclaration d'un Curseur sur une Collection.
Peut-être même que cela n'est pas possible.

Voici mon code (simplifié) :
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
TYPE typ_c_curseur IS REF CURSOR;
 
PROCEDURE proc1 (pio_c_curseur OUT typ_c_curseur)
IS
CURSOR v_c_donneur_manquant
IS
SELECT cont_code AS code_contrat, cont_libelle AS libelle_contrat,
           'Tiers donneur manquant'AS erreur
FROM contrats
WHERE contrats.cont_actif =1
AND contrats.cont_isarchived =0
AND contrats.cont_pk NOT IN (SELECT cont_trs_cont_fk
                      FROM contrats_tiers
                      WHERE cont_trs_typ_trs ='PRENEUR');
 
TYPE t_bail_errone IS RECORD(
              code_contrat VARCHAR2(200),
              libelle_contrat VARCHAR2(200),
              erreur VARCHAR2(200)
              );
 
TYPE tab_t_bail_errone IS TABLE OF bail_errone INDEX BY BINARY_INTEGER;
 
mes_baux_err tab_t_bail_errone;
 
v_n_compteur INTEGER:=0;
 
BEGIN
 OPEN v_c_donneur_manquant;
 LOOP
   BEGIN
     v_n_compteur := v_n_compteur +1;
     FETCH v_c_donneur_manquant
       INTO mes_baux_err (v_n_compteur);
     EXIT WHEN v_c_donneur_manquant%NOTFOUND;
   EXCEPTION
     WHEN OTHERS
     THEN
      RAISE;
   END;
 END LOOP;

 
 CLOSE v_c_donneur_manquant;

 
 OPEN pio_c_curseur FOR
    SELECT code_contrat, libelle_contrat, erreur
    FROM mes_baux_err
    ORDER BY code_contrat, libelle_contrat, erreur;
 
END proc1;
J'ai une erreur à la compilation : Erreur 00942 - Table ou vue inexistante.
Sur la déclaration d'ouverture du curseur pio_c_curseur.

Merci de m'aider ou de me dire que ma façon de faire est erronée.
(Je pense utiliser une table temporaire sinon).