Bonjour,
Version, OS : Oracle 8.1.7 sur Windows Xp
Message d'erreur :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 : Sélectionner tout - Visualiser dans une fenêtre à part ORA-06530: Référence à un élément composite non initialisé
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.Constation : Dès que je n'utilise pas les types dans le curseur ma procédure marche sans problème.
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
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.
Partager