sql >> Database teknologi >  >> RDS >> Oracle

sløjfe gennem et array for where-betingelsen pl/sql

Vi kan bruge TABLE funktion på en samling for at få en liste over tal/tegn.

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

8779254
8819930
8819931

Her bruger jeg Oracles interne VARRAY med en begrænsning på 32767. Du kan bruge din egen NESTED TABLE type.

create OR REPLACE TYPE yourtype AS TABLE OF NUMBER;

og vælg det derefter.

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

Så din forespørgsel kan simpelthen skrives som

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

12.2 og nyere, behøver du ikke engang at angive TABLE .

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




  1. De bedste ETL-værktøjer til migrering til PostgreSQL

  2. MySQL lukker ikke ned:Stop server:FEJL! MySQL-serverens PID-fil kunne ikke findes!

  3. Sådan laver du en JOIN fra to forskellige kolonner til den samme kolonne på en separat tabel

  4. Mysql Regular Expression-søgning uden gentagne tegn