Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Durchlaufen eines Arrays für die Where-Bedingung pl/sql

Wir können TABLE verwenden Funktion für eine Sammlung, um eine Liste von Zahlen / Zeichen zu erhalten.

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

8779254
8819930
8819931

Hier verwende ich Oracles internen VARRAY mit einem Limit von 32767. Sie können Ihre eigene NESTED TABLE verwenden Typ.

create OR REPLACE TYPE yourtype AS TABLE OF NUMBER;

und wählen Sie es dann aus.

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

Ihre Abfrage kann also einfach geschrieben werden als

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

12.2 und höher müssen Sie nicht einmal TABLE angeben .

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