80 votes

ORA-01461 : possibilité de lier une valeur LONG uniquement pour l'insertion dans une colonne LONG - se produit lors d'une requête

Lorsque j'essaie d'interroger des objets, j'obtiens l'erreur suivante :

ORA-01461: can bind a LONG value only for insert into a LONG column

Quelqu'un pourrait-il m'aider à trouver la cause et la solution du problème ?

0 votes

@Rupesh êtes-vous sûr que cela provient d'une requête ? Essayez-vous de faire une insertion peut-être ? De plus, comment est-ce exécuté (java, C#, sqlplus, etc.) ?

1 votes

Il existe des solutions de contournement PL/SQL pour l'utilisation de chaînes de caractères longues pour l'insertion dans les fichiers suivants CLOB y BLOB colonnes.

0 votes

Pour la plupart des personnes qui cherchent une solution, celle-ci serait la bonne (et non la solution acceptée) : stackoverflow.com/a/14497831/1657465

4voto

aneela Points 1329

J'étais confronté au même problème et je l'ai résolu en remplaçant simplement VARCHAR con CLOB . Ce site lien m'a aidé.

3voto

pahariayogi Points 118

Les applications utilisant JDBC 10.1 ont un bug (Doc ID 370438.1) et peuvent lancer la même exception ORA-01461 en travaillant avec une base de données à jeu de caractères UTF8 même si les caractères insérés sont inférieurs à la taille maximale de la colonne.

Solution recommandée : - Utilisez les pilotes JDBC 10gR2 ou supérieurs dans ce cas.

HTH

2voto

mkb Points 21

Kiran La réponse de l'auteur est sans aucun doute la réponse à mon cas.

Dans la partie code, je divise la chaîne de caractères en chaînes de 4000 caractères et j'essaie de les mettre dans la base de données.

Explose avec cette erreur.

La cause de l'erreur est l'utilisation de caractères utf, qui comptent 2 octets chacun. Même si je tronque à 4000 caractères dans le code (quelque chose comme String.Take(4000)), oracle considère 4001 lorsque la chaîne contient 'ö' ou tout autre caractère non-eng (non ascii pour être précis, qui sont représentés par deux ou octets en utf8).

1voto

Martin Staufcik Points 21

J'ai eu le même problème avec la base de données Entity Framework d'abord sur toutes les colonnes CLOB.

Comme solution de rechange, j'ai rempli les valeurs de texte avec des espaces pour avoir une largeur d'au moins 4000 dans les opérations d'insertion (je n'ai pas trouvé de meilleure solution).

1voto

doughgle Points 365

J'ai rencontré ce message d'erreur en essayant d'insérer une chaîne dans une colonne XMLTYPE.

Plus précisément, en utilisant le PreparedStatement de Java comme ceci :

ps.setString('XML', document);

donde XML est ici défini comme XMLTYPE.

0 votes

Comment avez-vous résolu ce problème ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X