sql >> Base de Datos >  >> RDS >> Oracle

recorriendo una matriz para la condición where pl/sql

Podemos usar TABLE función en una colección para obtener una lista de números/caracteres.

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

8779254
8819930
8819931

Aquí estoy usando el VARRAY interno de Oracle con un límite de 32767. Puede usar su propia NESTED TABLE tipo.

create OR REPLACE TYPE yourtype AS TABLE OF NUMBER;

y luego selecciónelo.

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

Entonces, su consulta simplemente puede escribirse como

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

12.2 y superior, ni siquiera necesitará especificar TABLE .

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