IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

[PL/SQL] : Problème avec CLOB


Sujet :

Oracle

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Points : 166
    Points
    166
    Par défaut [PL/SQL] : Problème avec CLOB
    Bonjour,

    j'ai créé une table contenant un champ de type CLOB de manière à pouvoir insérer de très long texte.
    Lorsque j'essaie d'insérer un nouvel enregistrement dans la table, l'Exception suivante apparaît :

    System.Data.OracleClient.OracleException: ORA-01704: constante de chaîne trop longue

    Savez pourquoi je suis limité alors que j'utilise un CLOB ?

    Merci et bonne journée.

  2. #2
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Bonjour,

    Peux-tu commencer par nous donner ta version d'oracle, l'outil utilisé (cf. règles du forum) ainsi que le code ? Cela nous évitera de jouer aux devinettes.
    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.

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Points : 166
    Points
    166
    Par défaut
    je suis désolé, j'essaierai d'être plus précis la prochaine fois

    La version Oracle est 9.i
    Le code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    CREATE TABLE demandes
    (
    	id_demande NUMBER(10),
    	logincre CHAR(8) NOT NULL,
    	loginclo CHAR(8),
    	dateclo DATE,
    	loginrej CHAR(8),
    	daterej DATE,
    	motifrej CLOB,
    	loginsup CHAR(8),
    	datesup DATE,
    	id_etat NUMBER(10) NOT NULL,
    	CONSTRAINT PK_demandes PRIMARY KEY (id_demande),
    	CONSTRAINT FK_demandes FOREIGN KEY (id_etat)
    	REFERENCES etats(id_etat),	
    );
     
     
    UPDATE demandes SET
    	loginrej ='dcollart',
    	daterej = SYSDATE,
    	motifrej = 'aaaaaaa....  plus de 2000 caractères   .....aaaaaaaaa',
    	id_etat = 5
    WHERE id_demande = 28;
    Merci et bonne journée.

  4. #4
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Cela vient du fait qu'oracle considère que la chaîne entre côte est du varchar2, donc limité à 4000 caractères.

    D'où récupères-tu cette valeur ? D'un fichier ?
    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.

  5. #5
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Effectivement, aucune "constante" ne peut dépasser 4000 caractères.

    Soit vous alimentez votre CLOB par plusieurs update successifs, soit vous utilisez le package DBMS_LOB.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  6. #6
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Points : 166
    Points
    166
    Par défaut
    Bonjour,

    merci pour ces précisions. Je crois que la solution la plus propre est l'utilisation du package DBMS_LOB plutôt que l'utilisation d'une succession de requêtes. Malheureusement je ne parviens pas à trouver d'exemple illustrant un UPDATE avec ce package.

    Pouvez-vous m'aider ?

    Merci et bonne journée.

  7. #7
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    La fonction DMBS_LOB.APPEND() devrait faire l'affaire.
    http://sheikyerbouti.developpez.com/...e=Chap9#L9.2.1

    Le CLOB source pouvant être qu'une simple variable CLOB déclarée dans un bloc PL/SQL.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

Discussions similaires

  1. [ACCESS][SQL] Problème avec requete SQL ...
    Par mpascolo dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/11/2005, 10h54
  2. [SQL]Problème avec ADO - Order by
    Par Dnx dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 03/11/2005, 10h55
  3. [T-SQL] problème avec un trigger
    Par karine77 dans le forum Adaptive Server Enterprise
    Réponses: 3
    Dernier message: 26/09/2005, 10h45
  4. Access/SQL : Problème avec Count
    Par Taurëndil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/01/2005, 15h49
  5. [SQL] problème avec les date et les group By
    Par Stef784ever dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/11/2004, 09h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo