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.
la boucle se fait correctement, mais j'ai un message d'erreur
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
je pense que cela vient du fait que je ne met pas entre quote les variables passees en parametre dans la requete dynamic.-920 ORA-00920: Opérateur relationnel non valide
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.
Partager