sql >> Databasteknik >  >> RDS >> Oracle

loopar genom en array för where-villkoret pl/sql

Vi kan använda TABLE funktion på en samling för att få en lista med siffror/tecken.

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

8779254
8819930
8819931

Här använder jag Oracles interna VARRAY med en gräns på 32767. Du kan använda din egen NESTED TABLE typ.

create OR REPLACE TYPE yourtype AS TABLE OF NUMBER;

och välj det sedan.

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

Så din fråga kan helt enkelt skrivas som

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

12.2 och högre behöver du inte ens ange TABLE .

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




  1. hitta den tid som har förflutit mellan två datum i oracle sql

  2. Hur man övervakar databasinstansernas tillstånd

  3. MySQL :När proceduren lagras är parameternamnet detsamma som tabellkolumnnamnet

  4. Hur ansluter jag Docker webbappsbehållare till Docker PostgreSQL-behållare?