Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Débuter
Débuter Forum d'entraide pour débuter avec 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 23/02/2011, 15h21   #1
Nouveau Membre du Club
 
Homme Benjamin
Stagiaire développement logiciel
Inscription : février 2011
Messages : 55
Détails du profil
Informations personnelles :
Nom : Homme Benjamin
Âge : 24
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Stagiaire développement logiciel
Secteur : Santé

Informations forums :
Inscription : février 2011
Messages : 55
Points : 32
Points : 32
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 !
bzerath est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 16h23   #2
Membre chevronné
 
Homme O. Joly
Support
Inscription : décembre 2010
Messages : 287
Détails du profil
Informations personnelles :
Nom : Homme O. Joly
Âge : 38
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Support
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2010
Messages : 287
Points : 617
Points : 617
il suffit de doubler le caractère.
ojo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 17h07   #3
Nouveau Membre du Club
 
Homme Benjamin
Stagiaire développement logiciel
Inscription : février 2011
Messages : 55
Détails du profil
Informations personnelles :
Nom : Homme Benjamin
Âge : 24
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Stagiaire développement logiciel
Secteur : Santé

Informations forums :
Inscription : février 2011
Messages : 55
Points : 32
Points : 32
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é)
bzerath est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 18h41   #4
Membre chevronné
 
Homme O. Joly
Support
Inscription : décembre 2010
Messages : 287
Détails du profil
Informations personnelles :
Nom : Homme O. Joly
Âge : 38
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Support
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2010
Messages : 287
Points : 617
Points : 617
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
ojo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 20h12   #5
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Jusqu'à 128 To en 11g :
http://download.oracle.com/docs/cd/B.../limits001.htm
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 09h20   #6
Nouveau Membre du Club
 
Homme Benjamin
Stagiaire développement logiciel
Inscription : février 2011
Messages : 55
Détails du profil
Informations personnelles :
Nom : Homme Benjamin
Âge : 24
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Stagiaire développement logiciel
Secteur : Santé

Informations forums :
Inscription : février 2011
Messages : 55
Points : 32
Points : 32
Citation:
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 ?
bzerath est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 11h27   #7
Rédacteur
 
Inscription : décembre 2002
Messages : 2 385
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 385
Points : 3 261
Points : 3 261
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...
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/02/2011, 14h39   #8
Nouveau Membre du Club
 
Homme Benjamin
Stagiaire développement logiciel
Inscription : février 2011
Messages : 55
Détails du profil
Informations personnelles :
Nom : Homme Benjamin
Âge : 24
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Stagiaire développement logiciel
Secteur : Santé

Informations forums :
Inscription : février 2011
Messages : 55
Points : 32
Points : 32
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.
bzerath est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 17h24   #9
Rédacteur
 
Inscription : décembre 2002
Messages : 2 385
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 385
Points : 3 261
Points : 3 261
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 :
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 ?
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/02/2011, 18h55   #10
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
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.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 10h11   #11
Nouveau Membre du Club
 
Homme Benjamin
Stagiaire développement logiciel
Inscription : février 2011
Messages : 55
Détails du profil
Informations personnelles :
Nom : Homme Benjamin
Âge : 24
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Stagiaire développement logiciel
Secteur : Santé

Informations forums :
Inscription : février 2011
Messages : 55
Points : 32
Points : 32
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 !
bzerath est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h17.


 
 
 
 
Partenaires

Hébergement Web