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

Jak dynamicznie przekazywać wartości do operatora IN?

Utwórz typ kolekcji:

CREATE TYPE stringlist IS TABLE OF VARCHAR2(100);
/

Następnie możesz przekazać go do procedury i użyć MEMBER OF operator (zamiast IN operator):

CREATE PROCEDURE Test (
  in_list     IN  stringlist,
  out_results OUT SYS_REFCURSOR
)
IS
BEGIN
  OPEN out_results FOR
  SELECT *
  FROM   your_table
  WHERE  your_column MEMBER OF in_list;
END;
/

Jeśli łączysz się z języka zewnętrznego, możesz dość łatwo przekazać tablicę do procedury (przykład Java) lub możesz utworzyć listę w PL/SQL lub z listy rozdzielanej.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak obliczyć rozmiar tabel w Oracle?

  2. Konwertuj rozdzielany ciąg na wiersze w Oracle

  3. pobierz wiele kolumn pogrupuj według interwału dat

  4. Czy możemy mieć wiele WITH AS w jednym sql - Oracle SQL?

  5. Autoinkrementacja Oracle z sekwencją i wyzwalaczem nie działa poprawnie