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 :
Lorsque j'appele ma procédure depuis SQL*Plus, j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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
Partager