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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  PL/SQL : utilisation de variable pour liste de valeur dans requête

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PL/SQL : utilisation de variable pour liste de valeur dans requête

n°1903075
4get9
C'est clair !
Posté le 07-07-2009 à 11:26:40  profilanswer
 

Bonjour,
 
j'utilise une variable pour stocker une liste de valeur :

FOR CSTATUT IN (  
     SELECT VAL
     FROM S_LST_OF_VAL
     WHERE TYPE      = 'FS_ORDER_STATUS'
     AND   ORDER_BY >= 20)
LOOP
     IF c_cpt_supaconf>0 THEN    
          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 || '''' || REPLACE(CSTATUT.VAL,'''','''''') || '''';
     c_cpt_supaconf := c_cpt_supaconf +1;
END LOOP;


 
au bilan cette variable contient bien ma liste de valeur  

'Confirmé', 'Echec', 'Soumis(e) - En attente', 'Abandon', 'Facture d''essai', 'Refusé', ...


 
mais quand j'utilise cette variable avec un IN dans une requête, ma requête ne retourne jamais rien.

SELECT *
FROM ...
WHERE  ...
     AND ...
     AND ...
     AND lignedetail.status_cd in (c_list_statut_Sup_a_conf);


Pour info si ma liste ne contient qu'une seule valeur, la requête fonctionne.
 
des idées ?  
Merci !
 
PS : J'ai pensé à un souci avec la virgule, mais je vois pas trop comment faire sans/autrement

mood
Publicité
Posté le 07-07-2009 à 11:26:40  profilanswer
 

n°1903108
casimimir
Posté le 07-07-2009 à 12:13:41  profilanswer
 

c'était pas la peine de dédoubler le topic.
 
ta requete ne peut pas marcher car dans ton cas cela recherche les lignes dont le champ status_cd est égal a "'Confirmé', 'Echec', 'Soumis(e) - En attente', 'Abandon', 'Facture d''essai', 'Refusé', ..." et non pas a chaque valeur distincte.

n°1903113
4get9
C'est clair !
Posté le 07-07-2009 à 12:31:30  profilanswer
 

bah disons que ce n'était pas le même souci, donc cela ne correspondait pas au titre.
L'idée c'est aussi de permettre à d'autres de trouver facilement la solution au même problème quand il l'auront dans 4 heures, 1 mois, ou 6 ans, ...
 
Sinon tu veux dire qu'il utilise ma liste comme une seule chaîne de texte ?
ça paraît cohérent par rapport à mon résultat, mais ai-je une solution de contournement ?

n°1903124
casimimir
Posté le 07-07-2009 à 12:50:56  profilanswer
 

déclarer une variable qui sera l'équivalent du record que ton select va ramener, construire ton sql sous forme de texte, ouvrir un curseur sur ce sql et boucler en faisant ce que tu as a faire.
 
un exemple de code sur cette page: http://www.experts-exchange.com/Da [...] 19445.html

n°1903129
4get9
C'est clair !
Posté le 07-07-2009 à 13:33:52  profilanswer
 

En fait mon script utilise à 20 reprises cette variable, il s'agit de requêtes imbriquées dans des FOR.
Le SQL total fait 1200 lignes et le BEGIN n'est qu'à la ligne 78 :/


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

  PL/SQL : utilisation de variable pour liste de valeur dans requête

 

Sujets relatifs
PL/SQL : Problème d'apostophes dans génération de liste de valeursvariable vba et fonction excel
[Résolu]VBA comment optimiser l'utilisation CPU dans un loop?Interface requête Base de données EXCEL
Requete SQL sélectionnant le plus petit nombre uniqueRequete php sur 2 tables
help me, script pour AD boite de dialogue et généré fichier 
Plus de sujets relatifs à : PL/SQL : utilisation de variable pour liste de valeur dans requête


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