Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 25/03/2011, 23h55   #1
Membre à l'essai
 
Inscription : décembre 2006
Messages : 61
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 61
Points : 23
Points : 23
Par défaut Problème de quotes insoluble?

Bonsoir tous !

Au sein d’une procédure PLSql employant une fonction :
- qui récupère directement les noms des champs comme nom de noeud xml puis leurs valeurs comme valeur de noeud bien entendu, ainsi que le package DBMS_XMLDOM
- pour l'exploitation par la suite de ces noeuds,

imaginez une requête tenue entre quotes du type 'select blabla' pour pouvoir être insérée dans une variable. (Rem: Délimitation impossible de cette requête avec des doubles quotes, j'ai déjà essayé )

Et, que dans les champs que l’on souhaite rapatrier il y ait une concaténation de 2 valeurs, provenant de 2 champs de la table donc, que l’on identifie par un simple alias, mais dont on veut tout de même pouvoir distinguer l'une de l'autre à l’aide d’un séparateur point virgule positionné entre les deux.

Telle que (je l'ai) rédigé de cette façon :
VarChaine:='select champ1 ||' ';' '|| champ2 as CONCATVALS from matable' et bien problème, car ceci ne fonctionne pas parce que le point virgule générera une exception parser java lang lors de l’emploi d’un getNodeValue() sur le nœud xml généré :

Cead qu’il butera sur le nœud généré < CONCATVALS>ValChamp1;ValChamp2< CONCATVALS />

Une proposition pour échapper le point virgule ?

J’ai fait pleins d’essais sans succès, que ce soit avec le caractère \ ou l’enveloppement par {}, caractères d'échappement mais je ne sais peut être pas bien agencer comme il faut;

Alors merci d'avance à l'esprit éclairé qui saura me montrer sa lumière
bros_70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 14h51   #2
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 446
Points : 10 446
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Votre caractère spécial devrait être traduit !
Que dit votre parser java si vous écrivez ceci :
Code :
VarChaine := 'select champ1 || ' '&.#.5.9.;' ' || champ2 as CONCATVALS from matable';
J'ai mis des points entre chaque caractères car le forum réinterprète ce code en point-virgule, il vous faudra les enlever.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2011, 17h19   #3
Nouveau Membre du Club
 
Homme
Administrateur de base de données
Inscription : mars 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : mars 2011
Messages : 15
Points : 33
Points : 33
Par défaut "Cacher" le caractère génant

Bonjour,
quand j'ai ce genre de problème je le contourne en utilisant la fonction CHR :

Code :
1
2
3
VarChaine:='select champ1 || '''' || chr(59) || '''' || champ2 as CONCATVALS from matable' 
 
chr(59) = ';'
si vous êtes en ASCII :

en base :
Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT ascii(';') FROM dual;
 
ASCII(';')
----------
        59
 
SELECT chr(59) FROM dual;
 
C
-
;
Salutations
t.merle 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 22h05.


 
 
 
 
Partenaires

Hébergement Web