Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

percorrendo um array para a condição where pl/sql


Podemos usar TABLE função em uma coleção para obter uma lista de números/caracteres.
SELECT *
FROM TABLE ( sys.odcinumberlist(8779254,8819930,8819931) );

8779254
8819930
8819931

Aqui estou usando o VARRAY interno da Oracle com um limite de 32767. Você pode usar sua própria NESTED TABLE modelo.
create OR REPLACE TYPE yourtype AS TABLE OF NUMBER;

e, em seguida, selecione-o.
SELECT *
FROM TABLE ( yourtype(8779254,8819930,8819931) );

Assim, sua consulta pode ser simplesmente escrita como
SELECT x_name
FROM table_x
WHERE x_id IN ( SELECT * FROM 
       TABLE ( yourtype(8779254,8819930,8819931) ) );

12.2 e acima, você nem precisará especificar TABLE .

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