Bonjour,

Version, OS : Oracle 8.1.7 sur Windows Xp
Message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ORA-06530: Référence à un élément composite non initialisé
Situation : Dans le cadre du développement d'un projet, je suis amené à developper un nombre assez important de procédure oracle. Pour éviter d'avoir des pages de déclaration de variable, j'ai voulu utilisé la création de type d'objet.

Code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
SQL> CREATE OR REPLACE TYPE mvt_type AS OBJECT (ID1 number,CHDET1 varchar2 (25),CHEXPL1 varchar2 (25
),NUANIM1 varchar2 (25),DAENTR1 date ,CAENTR1 varchar2 (1),DASORT1 date,CASORT1 varchar2 (1));
  2  /
 
Type créé.
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
 
SQL> CREATE OR REPLACE PROCEDURE TEST
  2  IS
  3  BEGIN
  4  -- Déclaration des variables
  5    DECLARE
  6    -- Curseur qui sélectionne pour détecter les mutations
  7    TYPE Rcurs_Mut IS REF CURSOR;
  8    curs_Mut Rcurs_Mut ;
  9    
 10    LC$Requete Varchar2 (4000); 
 11    
 12    Mut1 mvt_type;
 13    
 14    BEGIN
 15  
 16    -- Curseur 
 17    
 18    OPEN curs_Mut FOR 'SELECT T1.MVT_ID FROM E_MVT T1'; 
 19     LOOP 
 20            FETCH curs_Mut INTO Mut1.ID1; 
 21           EXIT WHEN curs_Mut%NOTFOUND; -- sortie lorsque le curseur ne ramène plus de ligne  
 22        
 23                 DBMS_OUTPUT.PUT_LINE( 'ID : ' || Mut1.ID1 ) ;
 24  
 25     END LOOP; 
 26    CLOSE curs_Mut;
 27   
 28    COMMIT;
 29    
 30    END;
 31  
 32  END TEST;
 33  /
 
Procédure créée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
SQL> exec TEST;
BEGIN TEST; END;
 
*
ERREUR à la ligne 1 :
ORA-06530: Référence à un élément composite non initialisé de
ORA-06512: à "IPGVALO_ADMIN.TEST", ligne 20
ORA-06512: à ligne 1
Constation : Dès que je n'utilise pas les types dans le curseur ma procédure marche sans problème.

Question : D'où vient cette erreur ? Ai-je oublié de déclarer ou de faire quelque chose pour pouvoir utiliser le type que j'ai crée ?

Merci d'avance de votre aide.