[Oracle 9i] erreur ORA-01006 quand la variable
Bonjour,
J'ai besoin d'un peu d'aide sur cette procédure dont le but est simplement de construire une requête update qui met à jour un champ NCLOB :
Code:
1 2 3 4 5 6 7 8 9 10 11
| (
tabName IN VARCHAR2 DEFAULT NULL,
fieldUpdateName IN VARCHAR2 DEFAULT NULL,
fieldValue IN nclob DEFAULT NULL,
fieldIdName IN VARCHAR2 DEFAULT NULL,
fieldId IN int DEFAULT NULL
)
AS
BEGIN
EXECUTE IMMEDIATE 'UPDATE ' || tabName || ' SET ' || fieldUpdateName || ' = '':x'' WHERE ' || fieldIdName || ' = ' || fieldId USING fieldValue;
END; |
Lorsque j'appele ma procédure depuis SQL*Plus, j'obtiens :
Code:
1 2 3 4
| ERREUR à la ligne 1 :
ORA-01006: La variable bind n'existe pas
ORA-06512: à "USERPORTAL.SP_GEN_FIELD_UPDATE", ligne 24
ORA-06512: à ligne 1 |
1- Je pense devoir utiliser une variable bind car EXECUTE IMMEDIATE de la pas les types Unicode (NVARCHAR et NCLOB) or fieldValue est obligatoirement NCLOB,
Je n'ai trouvé que ce moyen pour éviter le problème de "type incorrect" dans le EXECUTE IMMEDIATE
2- Je suis preneur pour tout autre moyen de mettre à jour ce champ NCLOB, mais j'aiemrai quand même comprendre pourquoi ça ne marche pas.
3- pour info, j'appele cette procédure depuis une appli en C#
Merci