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 29/01/2008, 17h55   #1
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 108
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 108
Points : 29
Points : 29
Par défaut [Oracle Datatype] For a long text >4000chars

Bonjour,

Je dois stocker dans un champ d'une table de ma DB Oracle, un texte qui doit pouvoir faire l'équivalent d'une page A4 disons 5000 caractères.
Le soucis c'est que le varchar2 est limité à 4000 char et je ne vois pas trop comment utiliser un CLOB si c'est bien la solution.

Je part d'un script php pour générer les query SQL et en effet utiliser un insert avec pour VALUE de mon champ clob qqchose du genre 'Mon long texte.....' ne fonctionne pas...
Pourriez vous m'aider?

Si ma solution ne semble pas convenable (type de champ incorrect) n'hésitez pas a me le signaler. Merci d'avance.
lem01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 18h36   #2
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 483
Points : 1 483
tu as essayé de mettre ta colonne en type LONG ?
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 18h43   #3
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Il vaut mieux utiliser un clob qu'un long.

Et de toute manièer cela ne marchera pas mieux avec long. Le problème est que la chaîne de caractères passée entre côte est considéré par oracle comme une variable varchar2, donc de 4000 caractères maxi.

Il faut tronqué ta chaine en champs de 4000 caractères et faire des concaténations :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SQL>INSERT INTO t1 VALUES (lpad('a', 4000, 'a') || lpad('a', 4000, 'a'));
INSERT INTO t1 VALUES (lpad('a', 4000, 'a') || lpad('a', 4000, 'a'))
            *
ERROR at line 1:
ORA-01489: result of string concatenation IS too long
 
SQL>INSERT INTO t1 VALUES (lpad('a', 4000, 'a'));
1 row created.
 
SQL>UPDATE t1 SET c= c|| lpad('a', 4000, 'a');
1 row updated.
 
SQL>SELECT length(c) FROM t1;
 LENGTH(C)
----------
      8000
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 19h56   #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
Citation:
Envoyé par scheu Voir le message
tu as essayé de mettre ta colonne en type LONG ?
S'embêter avec des LONG alors qu'il y a un CLOB voila qui serait bien étrange
orafrance 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 13h04.


 
 
 
 
Partenaires

Hébergement Web