PL/SQL - liste séparée par des virgules à l'intérieur de la CLAUSE
J'ai de la difficulté à obtenir un bloc de code pl/sql pour travailler. Dans le haut de ma procédure, je reçois des données à partir de mon oracle apex demande sur quelles cases sont cochées. Parce que le rapport qui contient les cases à cocher est généré dynamiquement, je dois faire une boucle par la
APEX_APPLICATION.G_F01
liste et de générer une chaîne séparée par des virgules, qui ressemble à ceci
v_list VARCHAR2(255) := (1,3,5,9,10);
Je veux, puis de la requête sur la liste plus tard et de la place de la v_list sur une clause comme
SELECT * FROM users
WHERE user_id IN (v_list);
Bien sûr, cela déclenche une erreur. Ma question est que puis-je convertir des v_list afin de pouvoir l'insérer dans une clause dans une requête à l'intérieur d'un pl/sql procédure?
OriginalL'auteur medium | 2012-10-09
Vous devez vous connecter pour publier un commentaire.
Si
users
est petit etuser_id
ne contient pas de virgules, vous pouvez utiliser:Cette requête n'est pas optimale, car il ne peut pas utiliser les index sur
user_id
.Je vous conseille d'utiliser un pipeline fonction qui retourne un tableau de
NUMBER
que vous pouvez interroger directement. Par exemple:Vous serait alors en mesure de construire des requêtes telles que:
OriginalL'auteur Vincent Malgrat
Vous pouvez utiliser
XMLTABLE
comme suitOriginalL'auteur eatSleepCode
J'ai essayé de trouver une solution pour ça aussi, mais n'a jamais réussi. Vous pouvez construire la requête comme une chaîne, puis exécuter EXÉCUTER IMMÉDIATE, voir http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/dynamic.htm#i14500.
Cela dit, il vient de se produire pour moi que l'argument d'une clause peut être une sous-sélection:
donc est-il possible d'exposer la case à cocher valeurs d'une fonction stockée? Alors vous pourriez être en mesure de faire quelque chose comme
OriginalL'auteur Nils Weinander
Personnellement, j'aime bien cette approche:
Qui peut être trouvé parmi d'autres exemples dans Fil De Discussion: Split Délimitée Par Des Virgules De La Chaîne D'Oracle
Si vous vous sentez comme inonder encore plus d'options, visitez le OTN plsql forums.
OriginalL'auteur Tom