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 :

Insérer des quotes dans un Clob


Sujet :

Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2011
    Messages : 76
    Points : 92
    Points
    92
    Par défaut Insérer des quotes dans un Clob
    Hello !

    Alors voilà, Je dois travailler sous oracle et y enregistrer des bouts de code.

    Etant donné que ces bouts de code doivent parfois dépasser les 4000 caractères, je compte les enregistrer dans un CLOB.

    Mon problème est le suivant : des simples quotes (-> ' <-) permettent de définir le texte à insérer dans le clob. Si je mets des guillemets (-> " <-) il s'embrouille et pense que je parle de colonne : "ORA-00984: Un nom de colonne n'est pas autorisé ici".
    Mais dans mon code j'ai des lignes du style println '42'. Sous easyPHP je mettais des guillemets sans problème.

    Là quelqu'un connait-il un moyen pour insérer des quotes dans un clob sans qu'Oracle croie que je ferme le texte ? J'ai déjà tenté le classique \', mais ça ne fonctionne pas.

    Merci !

  2. #2
    Membre expérimenté Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Points : 1 597
    Points
    1 597
    Par défaut
    il suffit de doubler le caractère.

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2011
    Messages : 76
    Points : 92
    Points
    92
    Par défaut
    Ah oui ^^

    J'avais mis delestage aussi car j'avais réussi en mettant des guillemets, mais je préfère cette solution, merci

    Bon, maintenant, j'ai un problème d'erreur ORA-01704: constante de chaîne trop longue dans mon clob, ce qui est un comble pour un type censé être capable de contenir plusieurs Go de données... (cf mon message d'à coté)

  4. #4
    Membre expérimenté Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Points : 1 597
    Points
    1 597
    Par défaut
    Vous ne pouvez pas mettre plus de 32767 caractères directement dans un clob, par contre par petits morceaux en utilisant dbms_lob.writeappend vous pouvez en mettre quelques millions

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388

  6. #6
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2011
    Messages : 76
    Points : 92
    Points
    92
    Par défaut
    Vous ne pouvez pas mettre plus de 32767 caractères directement dans un clob, par contre par petits morceaux en utilisant dbms_lob.writeappend vous pouvez en mettre quelques millions
    Bon à savoir !

    Seulement dans mon cas, il s'énerve pour environ 4k5 ou 5k caractères, je suis loin des 32k. Y a-t-il un moyen particulier d'enregistrer des caractères dans le clob qui permette plus de choses qu'un simple insert into ?

  7. #7
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Points : 8 079
    Points
    8 079
    Par défaut
    Citation Envoyé par bzerath Voir le message
    Seulement dans mon cas, il s'énerve pour environ 4k5 ou 5k caractères, je suis loin des 32k. Y a-t-il un moyen particulier d'enregistrer des caractères dans le clob qui permette plus de choses qu'un simple insert into ?
    Comme on n'a ni votre version d'Oracle, ni votre code pour voir comment vous vous y prenez, on va avoir du mal à avancer...

  8. #8
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2011
    Messages : 76
    Points : 92
    Points
    92
    Par défaut
    Hello,

    Ma version d'Oracle est 10g.

    Ceci dit, mon problème initial est résolu : il suffit de doubler le '.
    Cependant, doubler une quote n'est pas compatible avec l'utilisation que je souhaite faire du texte après, à savoir l'importer dans un string java. Je vais certainement chercher à apprendre comment manipuler les Blobs, qui contiendront un fichier texte que je pourrai parser en java.

    Merci pour vos réponses.

  9. #9
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Points : 8 079
    Points
    8 079
    Par défaut
    A partir de la 10g, vous pouvez protéger une chaîne qui contient des caractères spéciaux, notamment l'apostrophe, par un Q initial et des caractères d'encadrement symétriques au choix : (), {} [], !!, etc.
    Avec ce mécanisme, il n'y a plus besoin de doubler les apostrophes.
    Le Q se met en dehors de la chaîne, mais les caractères d'encadrement à l'intérieur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    create table test(a varchar2(25));
    insert into test values( Q'{l'atout d'être en 10g}' );
     
    select * from test;
    A
    -------------------------
    l'atout d'être en 10g
    Et vous avez résolu votre problème de taille ?

  10. #10
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Citation Envoyé par bzerath Voir le message
    Bon à savoir !

    Seulement dans mon cas, il s'énerve pour environ 4k5 ou 5k caractères, je suis loin des 32k. Y a-t-il un moyen particulier d'enregistrer des caractères dans le clob qui permette plus de choses qu'un simple insert into ?
    Pour être un peu plus précis, en 10g le type varchar2 est limité à 4000 caractères en SQL mais 32767 en PL/SQL.

  11. #11
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2011
    Messages : 76
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par Pomalaix Voir le message
    A partir de la 10g, vous pouvez protéger une chaîne qui contient des caractères spéciaux, notamment l'apostrophe, par un Q initial et des caractères d'encadrement symétriques au choix : (), {} [], !!, etc.
    Avec ce mécanisme, il n'y a plus besoin de doubler les apostrophes.
    Le Q se met en dehors de la chaîne, mais les caractères d'encadrement à l'intérieur.

    Et vous avez résolu votre problème de taille ?
    Ah, s'il y a moyen de procéder comme cela, ça m'intéresse déjà davantage !
    Mais je n'ai pas résolu mon problème de taille, vu que je ne connais pour le moment que le sql, je découvre à peine le pl/sql. Et si j'en crois Waldar, seul le pl/sql me permettrait de dépasser cette limite.

    Quelqu'un a-t-il un bout de code ou un tuto pour que je sache comment m'occuper de ça ?

    Merci d'avance !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. supprimer une table qui a des quotes dans son nom
    Par kleenex dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2005, 16h03
  2. Insérer des lignes dans une StringGrid
    Par da_latifa dans le forum Composants VCL
    Réponses: 1
    Dernier message: 26/09/2005, 12h45
  3. Réponses: 2
    Dernier message: 08/08/2005, 13h54
  4. Placer des quote dans un champs
    Par PrinceMaster77 dans le forum ASP
    Réponses: 2
    Dernier message: 21/04/2005, 10h36
  5. insérer des images dans une bd postgresql
    Par ephet dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/01/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