Aller au contenu

[PL/SQL]conflit entre la clause IN et les VARCHAR2


windu.2b

Messages recommandés

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

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 :francais:

Lien vers le commentaire
Partager sur d’autres sites

ben ton varchar, c'est bien une "liste d'entiers séparés par des virgules", non ? :francais:

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...