Bien le bonjour à toutes et à tous.
Je me pose quelques questions relatives à EXECUTE IMMEDIATE; Mon code est le suivant :
J'ai l'erreur suivante qui pointe sur la ligne en rouge
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 DECLARE vRequete VARCHAR2(300); vErrMajMaTable EXCEPTION; BEGIN IF(premiere condition) THEN vRequete := 'INSERT INTO MaTable ( MonChamp1 , MonChamp2 ) VALUES ( '||MaVariable1||' , '||MaVariable2||' )'; ELSE vRequete := 'UPDATE MaTable SET MonChamp1 = '||MaVariable1||' , MonChamp2 = '||MaVariable2||' WHERE gnagnagna '; END IF; EXECUTE IMMEDIATE vRequete; IF(SQL%NOTFOUND) THEN RAISE vErrMajMaTable; END IF; EXCEPTION WHEN vErrMajMaTable THEN FonctionQuiTraceErreur(prend en argument la requete); blablabla; END;
Je ne sais pas trop où est le problème puisque j'ai bien déclaré ma variable vRequete, la longueur est bonne qui plus est.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ORA-06502 : erreur numerique ou erreur sur une valeur.
Bon sinon, j'ai d'autres questions concernant EXECUTE IMMEDIATE.
- Est-ce que la requete passée en paramètre doit se terminer par un ";"
- De quel type doit être cette variable ?
merci d'avance
Bahan
Partager