Bonjour,
je suis en train de faire une requête dynamique. Afin de récupérer la valeur de mon curseur DBMS_SQL, je crée une table temporaire. J'insère dans cette table les valeurs des colonnes récupérées à partir de mon curseur sous forme de variables.
Mon problème intervient lorsque l'une des valeurs NUMBER est vide.
Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
vSqlInsert           VARCHAR2(4000);
vSqlInsert :=  'INSERT INTO ' || pDynamicViewName || ' VALUES (''' ||  
                            variablestring1 || ''', ' ||
                            variablenumber || ', ''' || 
                            variablestring2 || ''')';
DBMS_OUTPUT.PUT_LINE(vSqlInsert);
Ceci m'affiche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
INSERT INTO DynamicViewName VALUES ('valeurstring1', , 'valeurstring2')
Et ceci me donne à l'exécution l'erreur suivante :
ORA-00936: missing expression
Ce que je veux est qu'au lieu d'avoir un espace vide, j'ai la valeur NULL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
INSERT INTO DynamicViewName VALUES ('valeurstring1', NULL, 'valeurstring2')
ce qui fonctionne.

J'ai essayé de remplacer number par nvl(number , NULL) mais ça revient au même. Et évidemment si je fais nvl(number , 'NULL'), il y a l'erreur
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
J'espère avoir été assez claire, cela fait un moment que je planche la dessus et je n'ai rien trouvé sur internet...
Merci pour votre aide