Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie werden Werte dynamisch an den IN-Operator übergeben?

Erstellen Sie einen Sammlungstyp:

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

Dann können Sie es an eine Prozedur übergeben und den MEMBER OF verwenden Operator (anstelle des IN Betreiber):

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;
/

Wenn Sie eine Verbindung von einer externen Sprache aus herstellen, können Sie ganz einfach ein Array an die Prozedur übergeben (Java-Beispiel) oder Sie können die Liste in PL/SQL oder aus einer Liste mit Trennzeichen erstellen.