Page 1 sur 1
Oracle : type LONG : pb de concaténation
Posté : 21 août 2006, 16:12
par starkeus
Bonjour à tous,
je suis face à une erreur oracle qui me laisse perplexe.
J'essaie d'updater une colonne de type LONG en la concaténant dynamiquement.
Exemple:
Code : Tout sélectionner
UPDATE MESSAGE
SET CONTENU = CONTENU || 'suite du message'
WHERE ETA_CODE IS NULL;
Et Oracle me jette avec cette erreur:
Code : Tout sélectionner
ORA-00932: types de données incohérents : NUMBER attendu ; LONG obtenu
Or le type LONG est une chaine de caractères!!
Sachant que j'utilise cette méthode de concaténation sans arrêt, avec d'autres types et tjs avec succès.
Avez-vous déjà rencontré ce pb et auriez vous une quelconque explication??

Posté : 21 août 2006, 17:12
par zeus
Est-ce que tu as fait un DESCRIBE table pour voir que le format de cette colonne est bien un long ?
le sujet aurait plus sa place dans le forum SQL

sujet déplacé

Posté : 21 août 2006, 17:25
par starkeus
le sujet aurait plus sa place dans le forum SQL

sujet déplacé

Oui désolé c'est la fatigue, j'ai pas cliqué sur le bon forum
Est-ce que tu as fait un DESCRIBE table pour voir que le format de cette colonne est bien un long ?
Oui je suis sous TOAD et le format de la colonne est bien un LONG. D'ailleurs j'ai déjà une interface qui permet d'alimenter cette table et j'insère et je met à jour avec du texte...
il n'ya que cette concaténation qui ne veut pas se faire.
Posté : 23 août 2006, 17:26
par starkeus
Bon d'après des collègues...ce n'est pas ppossible car c'est du binaire...
mais bon à vérifier.
Posté : 23 août 2006, 17:59
par Henri
Le type LONG est essentiellement utilisé pour stocker des données textuelles de type VARCHAR2, mais en plus long.
Oracle recommande de ne plus utiliser ce type et d'utiliser à la place BLOB, CLOB ou NCLOB (Do not create tables with LONG columns. Use LOB columns (CLOB, NCLOB, BLOB) instead. LONG columns are supported only for backward compatibility. Oracle also recommends that you convert existing LONG columns to LOB columns. LOB columns are subject to far fewer restrictions than LONG columns. Further, LOB functionality is enhanced in every release, whereas LONG functionality has been static for several releases. -- Doc Oracle 10g). Tu peux éventuellement utiliser la fonction TO_LOB pour convertir.
De même avec les types RAW et LONG RAW (stockage de binaires)qui ne doivent plus être utilisés.
Pour stocker le contenu de ton message, il faut donc que tu utilises un CLOB ou NCLOB (codage Unicode). Je viens de vérifier à l'instant : la concaténation d'un CLOB avec une chaîne de caractères fonctionne.
Posté : 24 août 2006, 09:37
par starkeus
Merci Henri !
