sql >> Databáze >  >> RDS >> Oracle

opakování pole pro podmínku where pl/sql

Můžeme použít TABLE funkce na kolekci získat seznam čísel / znaků.

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

8779254
8819930
8819931

Zde používám interní VARRAY Oracle s limitem 32767. Můžete použít svou vlastní NESTED TABLE typ.

create OR REPLACE TYPE yourtype AS TABLE OF NUMBER;

a poté jej vyberte.

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

Takže váš dotaz lze jednoduše napsat jako

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

12.2 a vyšší, nemusíte ani zadávat TABLE .

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




  1. Agregační funkce Product().

  2. PostgreSQL:Identifikace vracejících se návštěvníků na základě data – spojení nebo funkce okna?

  3. Proč tato transakce PostgreSQL dává VAROVÁNÍ:neprobíhá žádná transakce

  4. Plán provádění funkcí v PostgreSQL