Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/03/2008, 17h50   #1
Invité régulier
 
Inscription : mars 2007
Messages : 61
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 61
Points : 7
Points : 7
Par défaut Recherche de caractères dans un champ de type LONG

Bonjour,

Je post ici car je rencontre un problème que je n'arrive pas à solutionner.
Je tente de reconnaître de 'couper' les X premiers caractères dans un champ de type LONG, seulement j'ai toujours le même souci :

ORA-00932 : Type de données incohérents

Exemple de ma requête :

Code :
1
2
3
4
 
SELECT SUBSTR(DEMANDE.DESCRIPTIF,5)
FROM STAFF.DEMANDE DEMANDE
WHERE (DEMANDE.STATUT_DEMANDE='Suspendue')
Ma version d'Oracle est la version 9i.

J'ai essayé de passer la chaine de caractères comprise dans DEMANDE.DESCRIPTIF en char avec TO_CHAR, mais cela n'a pas fonctionné.

Quelqu'un a t'il une idée, ou a déja rencontré ce problème ?

Merci par avance.

Tsuna
Tsuna78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 17h56   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
TO_LOB serait surement plus approprié
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 11h06   #3
Invité régulier
 
Inscription : mars 2007
Messages : 61
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 61
Points : 7
Points : 7
Bonjour et merci pour votre réponse,

J'ai lu le tuto sur LOB, type que je ne connaissais pas (je suis nouveau sous Oracle).

J'ai essayé de l'utiliser mais je n'y suis pas arrivé.

Code :
1
2
3
4
 
SELECT SUBSTR(TO_LOB(DEMANDE.DESCRIPTIF),5)
FROM STAFF.DEMANDE DEMANDE
WHERE (DEMANDE.STATUT_DEMANDE='Suspendue')
Je n'ai des droits qu'en lecture sur la base, cela peut-il poser problème ?

Toujours la même erreur : Type de données incohérents.

Tsuna
Tsuna78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 11h37   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Non, ça ne marchera pas... le long peut-il dépasser 32000 caractères ? Pourquoi ne pas modifier le type de colonne en CLOB ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 11h50   #5
Invité régulier
 
Inscription : mars 2007
Messages : 61
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 61
Points : 7
Points : 7
Oui, le LONG peut dépasser 32 000 caractères.

Je suis en prestation et travaille sur la base de données d'un client, et ils sont plutôt réticents à vouloir modifier des choses. Je doute donc que leur DBA modifie le type de colonne.

Sinon je suis bien d'accord (malgré ma petite expérience ), suite aux lectures que j'ai faites, que ce serait préférable de modifier le type en CLOB.

Existe t'il un moyen de contourner cela ? Sinon, j'irai à l'attaque du client

Tsuna
Tsuna78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 12h13   #6
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par Tsuna78 Voir le message
Je doute donc que leur DBA modifie le type de colonne.
si il y a un DBA et qu'il est assez malin pour ne pas vouloir remplacer les LONG par des LOB j'suis sûr qu'il aura une idée brillante pour te sortir de ce mauvais pas

Citation:
Envoyé par Tsuna78 Voir le message
Existe t'il un moyen de contourner cela ? Sinon, j'irai à l'attaque du client
passer par une table intermédiaire pour utiliser TO_LOB mais en plus d'être bien compliqué ça risque de ne pas être performant
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 15h15   #7
Invité régulier
 
Inscription : mars 2007
Messages : 61
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 61
Points : 7
Points : 7
Ok merci pour ton aide,

je vais donc contacter leur DBA et lui exposer mon problème.

Je reviendrai pour raconter la suite de ce trépidant problème

Tsuna
Tsuna78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h20.


 
 
 
 
Partenaires

Hébergement Web