Oracle
 sql >> Baza danych >  >> RDS >> Oracle

pętla przez tablicę dla warunku where pl/sql

Możemy użyć TABLE funkcji na kolekcji, aby uzyskać listę liczb / znaków.

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

8779254
8819930
8819931

Tutaj używam wewnętrznego VARRAY Oracle z limitem 32767. Możesz użyć własnej NESTED TABLE typ.

create OR REPLACE TYPE yourtype AS TABLE OF NUMBER;

a następnie wybierz go.

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

Twoje zapytanie można więc po prostu zapisać jako

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

12.2 i nowsze, nie musisz nawet określać TABLE .

SELECT * FROM yourtype(8779254,8819930,8819931) działa.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można pobrać wyników, przekazując dane wejściowe jako ścieżkę xml w oracle

  2. SQL:wstaw wiersze z sumowanymi wartościami

  3. Jak odwrócić ciąg znaków w Oracle (11g) SQL bez użycia funkcji REVERSE()?

  4. Wyszukiwanie tekstowe Oracle w wielu tabelach i złączeniach

  5. Jak mogę automatycznie odblokować stoły w Oracle po określonym czasie?