bonjour,

je travaille en oracle 8i et je desire construire une requete dynamic en passant des parametres qui peuvent etre des caracateres ou des nombres.

voici un bout de mon code , il se trouve dans une procedure stockee.
je dois extraire à partir de plusieurs tables ( 5 en tout ) des informations que je dois integrer dans plusieurs autres tables. ceci uniquement en mode creation.
et donc pour eviter les exceptions, je dois verifier pour chaque FETCH si j'ai deja inserer ces elements dans mes nouvelles tables.
je me sers des champs du FETCH que je passe dans ma requete dynamic.

et si je n'ai pas sql@found je passe en insertion.



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
 
Sql_Smt := 'select count(*) from vdi_vet_grille where cod_dip :=1 and cod_vrs_vdi :=2 and cod_etp :=3 and cod_vrs_vet :=4 and cod_ann :=5';
.....
FETCH ....
LOOP
....
BEGIN
               EXECUTE IMMEDIATE Sql_Smt
                  USING Rec_Vdi.Cod_Dip, Rec_Vdi.Cod_Vrs_Vdi, Rec_Vet.Cod_Etp, Rec_Vet.Cod_Vrs_Vet, Cod_Ann;
            EXCEPTION
               WHEN OTHERS THEN
                  Dbms_Output.Put_Line('Pb traitement : ' || SQLCODE || ' ' ||
                                       SQLERRM);
            END;
if sql@notfound then
end if;
....
FETCH ....
END LOOP
la boucle se fait correctement, mais j'ai un message d'erreur
-920 ORA-00920: Opérateur relationnel non valide
je pense que cela vient du fait que je ne met pas entre quote les variables passees en parametre dans la requete dynamic.

j'espere avoir ete clair.

ou si vous avez un autre solution pour realiser ce traitement, n'hesitez pas je suis preneur.

merci d'avance pour vos reponses.