windu.2b Posté(e) le 29 avril 2008 Partager Posté(e) le 29 avril 2008 bonjour, J'ai un gros problème en PL/SQL (que je découvre plus ou moins en même temps). J'ai une procédure qui reçoit un VARCHAR2 (une liste d'entier séparés par des virgules), et je dois mettre ceci dans la clause IN d'une requête SQL. Sauf que ça marche bien évidemment pas, car il croit que c'est une chaine et non plusieurs entiers cote à cote. Lien vers le commentaire Partager sur d’autres sites More sharing options...
SyGEN Posté(e) le 30 avril 2008 Partager Posté(e) le 30 avril 2008 Je pense que ce lien pourra t'aider : Split PLSQL A partir de là tu peux construire ton query dans une boucle et utiliser ton IN. Lien vers le commentaire Partager sur d’autres sites More sharing options...
windu.2b Posté(e) le 30 avril 2008 Auteur Partager Posté(e) le 30 avril 2008 Bonsoir, Tout d'abord merci de ta réponse et désolé pour le délai de la mienne : je n'ai pas pu consulter le site que tu proposes car le proxy de ma boite le bloquait. Je viens donc juste de lire tout cela à l'instant... Mais malheureusement, cela ne répond pas à ma question ! La solution proposée renvoie une chaine de caractères, ok. Sauf que ce dont j'ai besoin, c'est de récupérer une suite de valeur numérique, à placer directement dans un IN (...), ce qu'une requête imbriquée sait faire par exemple. Sauf que dans mon cas, c'est inenvisageable vu que les identifiants en question proviennent d'une table située sur une autre base de données. Bon, en cherchant encore aujourd'hui, j'ai en fait trouvé une solution qui fonctionne mais qui n'est pas tout à fait comme prévue au départ. En gros, au lieu d'avoir : WHERE mon_champs IN (val1, val2, valN) J'ai fait comme ceci : WHERE varchar_val LIKE ('%mon_champs%') Donc je passe par un LIKE qui va vérifier dans la chaîne des identifiants, mais j'ignore si tout ceci est plus ou moins consommateur en ressources ? Bon, je mets le sujet en Résolu, vu que la solution que je donne fonctionne parfaitement. Merci bien, SyGEN Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 1 mai 2008 Partager Posté(e) le 1 mai 2008 en gros, il faut que tu interprètes le CSV ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
windu.2b Posté(e) le 1 mai 2008 Auteur Partager Posté(e) le 1 mai 2008 en gros, il faut que tu interprètes le CSV ? Je ne vois pas très bien ce que le CSV vient faire dans l'histoire À moins qu'il ne s'agisse d'une abréviation qui n'a rien à voir avec le format de fichier ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 2 mai 2008 Partager Posté(e) le 2 mai 2008 ben ton varchar, c'est bien une "liste d'entiers séparés par des virgules", non ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
windu.2b Posté(e) le 3 mai 2008 Auteur Partager Posté(e) le 3 mai 2008 ben ton varchar, c'est bien une "liste d'entiers séparés par des virgules", non ? Oui, mais non... Si j'avais construit la requête dans un langage de programmation (ce que je faisais iniatelement en PHP), le problème ne se poserait pas. Mais vu que je fais ça maintenant dans une procédure stockée (donc dans un package Oracle), cette subtilité ne marche bien évidemment plus. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.