Oracle
 sql >> Base de données >  >> RDS >> Oracle

boucle à travers un tableau pour la condition où pl/sql

Nous pouvons utiliser TABLE fonction sur une collection pour obtenir une liste de nombres/caractère.

SELECT *
FROM TABLE ( sys.odcinumberlist(8779254,8819930,8819931) );

8779254
8819930
8819931

Ici, j'utilise le VARRAY interne d'Oracle avec une limite de 32767. Vous pouvez utiliser votre propre NESTED TABLE saisir.

create OR REPLACE TYPE yourtype AS TABLE OF NUMBER;

puis sélectionnez-le.

SELECT *
FROM TABLE ( yourtype(8779254,8819930,8819931) );

Ainsi, votre requête peut simplement être écrite comme

SELECT x_name
FROM table_x
WHERE x_id IN ( SELECT * FROM 
       TABLE ( yourtype(8779254,8819930,8819931) ) );

12.2 et supérieur, vous n'aurez même pas besoin de spécifier TABLE .

SELECT * FROM yourtype(8779254,8819930,8819931) fonctionne.