sql >> Database >  >> RDS >> Oracle

een array doorlopen voor de waar-voorwaarde pl/sql

We kunnen TABLE . gebruiken functie op een verzameling om een ​​lijst met cijfers/tekens te krijgen.

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

8779254
8819930
8819931

Hier gebruik ik Oracle's interne VARRAY met een limiet van 32767. Je mag je eigen NESTED TABLE . gebruiken typ.

create OR REPLACE TYPE yourtype AS TABLE OF NUMBER;

en selecteer het dan.

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

Uw vraag kan dus eenvoudig worden geschreven als

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

12.2 en hoger hoeft u niet eens TABLE op te geven .

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




  1. Hoe Google Cloud SQL te verbinden met C#

  2. Hoe meerdere waarden in één kolom op te slaan waar minder geheugen wordt gebruikt?

  3. SQL Alleen in tabel invoegen als record niet bestaat

  4. Hoe een afbeelding in de postgres-database op te slaan met behulp van de slaapstand