Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1510 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  PL/SQL : Problème d'apostophes dans génération de liste de valeurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PL/SQL : Problème d'apostophes dans génération de liste de valeurs

n°1902796
4get9
C'est clair !
Posté le 06-07-2009 à 17:10:28  profilanswer
 

Bonjour à tous,
 
je suis en train de générer en PL/SQL une requête.
La 1ere étape consiste à construire une liste de valeurs :


c_list_statut_Sup_a_conf VARCHAR(1000)   := '';
c_cpt_supaconf     NUMBER(5)  := 0;-- nombre d'éléments que compte la liste
...
BEGIN
...
c_list_statut_Sup_a_conf := '('; -- on ouvre les parenthèses
FOR CSTATUT IN  
     (SELECT VAL FROM S_LST_OF_VAL ....)
LOOP  
     IF c_cpt_supaconf>0 THEN -- Ce n'est pas le 1er élément donc on rajoute une virgule de séparation    
          c_list_statut_Sup_a_conf := c_list_statut_Sup_a_conf || ', ';  
     END IF;  
     c_list_statut_Sup_a_conf := c_list_statut_Sup_a_conf || '''' || CSTATUT.VAL || ''''; -- on ajoute la valeur trouvée à la liste  
     c_cpt_supaconf := c_cpt_supaconf +1; -- on incrémente le compteur d'éléments
END LOOP;  
 
c_list_statut_Sup_a_conf := c_list_statut_Sup_a_conf || ')'; -- on referme les parenthèses


 
au Bilan j'obtiens une liste de valeurs que je compte utiliser dans un "NOT IN" :
('Confirmé', 'Echec', 'Soumis(e) - En attente', 'Abandon', 'Facture d'essai', ..., 'Annulation Demande résiliation')
Et c'est là qu'apparaît mon souci, car il y a une apostrophe dans la valeur ce qui casse tout.
 
Comment faire pour m'en sortir ?
 
Merci d'avances pour vos idées...

mood
Publicité
Posté le 06-07-2009 à 17:10:28  profilanswer
 

n°1902826
olivthill
Posté le 06-07-2009 à 17:57:25  profilanswer
 

Faire  

c_list_statut_Sup_a_conf := c_list_statut_Sup_a_conf || ''''
 || replace(CSTATUT.VAL,'''','''''') || ''''; -- on ajoute la valeur trouvée à la liste  


n°1902840
4get9
C'est clair !
Posté le 06-07-2009 à 18:57:04  profilanswer
 

cool ! Tout simplement, bien vu  !
J'essaye ça demain, je te tiens au courant.
 
Merki !!!!!

n°1902972
4get9
C'est clair !
Posté le 07-07-2009 à 09:10:27  profilanswer
 

Bon ma liste est bonne, merci !  
 
Par contre j'ai l'impression qu'on ne peut pas utiliser cette variable, je m'explique :
 
j'ai utilisé un  

DBMS_OUTPUT.PUT_LINE(c_list_statut_Sup_a_conf);


pour contrôler ma variable et j'obtiens bien ce que je recherchais :
('Confirmé', 'Echec', 'Soumis(e) - En attente', 'Abandon', 'Facture d''essai', ...)
 
mais lors de l'utilisation de cette variable dans ma requête :

AND lignedetail.status_cd in c_list_statut_Sup_a_conf


semble poser problème.
En effet si je lance mon sql il ne me trouve rien
alors que :
- si je lance la requête en remplaçant les variables par leur valeurs ça me retourne 1 ligne (mon cas de test)
- si je lance la requête sans la clause utilisant ma variable ça me retourne 1 ligne  
 [:bastian]  
 
y'a des trucs à pas faire avec les variables ?

n°1903002
casimimir
Posté le 07-07-2009 à 09:59:38  profilanswer
 

tu peux montrer le code ou tu exécutes ta requete?

n°1903039
4get9
C'est clair !
Posté le 07-07-2009 à 10:36:57  profilanswer
 

SELECT ...
FROM   ...
WHERE   ...
     AND ...
     AND ...
     AND lignedetail.status_cd in c_list_statut_Sup_a_conf


Message édité par 4get9 le 07-07-2009 à 10:37:18
n°1903040
4get9
C'est clair !
Posté le 07-07-2009 à 10:37:39  profilanswer
 

visiblement les virgules semblent être la cause du problème

 

si je force c_list_statut_Sup_a_conf à :
('toto') : ça fonctionne
('toto', 'titi'): ça ne fonctionne pas


Message édité par 4get9 le 07-07-2009 à 10:41:00
n°1903068
4get9
C'est clair !
Posté le 07-07-2009 à 11:18:48  profilanswer
 

Je vais plutôt créer un nouveau topic et fermer celui-ci puisqu'on s'éloigne du sujet


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  PL/SQL : Problème d'apostophes dans génération de liste de valeurs

 

Sujets relatifs
problème de jointure dans ma requette[java] Problème d'optimisation de traitements batch
Problème rafraichissement JTableRequete SQL sélectionnant le plus petit nombre unique
[RESOLU] Problème de vérouillage dans ma feuille excel[OK] problème d'éxécution du PHP sur mon serveur apache (sous centos)
au secours probleme joomla et Internet Explorer[résolu] probleme fopen : php_network_getaddresses
[imagemagick] problème pour récuperer la valeur d'un pixelProblème de choix de jointure
Plus de sujets relatifs à : PL/SQL : Problème d'apostophes dans génération de liste de valeurs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR