sql >> Database >  >> RDS >> Oracle

PL/SQL - Lijstvariabele gebruiken in Waar in clausule

Gebruik een verzameling:

CREATE TYPE Varchar2TableType AS TABLE OF VARCHAR2(200);

Of gebruik een ingebouwd type zoals SYS.ODCIVARCHAR2LIST of SYS.ODCINUMBERLIST :

VARIABLE cursor REFCURSOR;

DECLARE
  your_collection SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST();
BEGIN
  your_collection.EXTEND( 100 );

  your_collection(  1) := 'Some value';
  your_collection(  2) := 'Some other value';
  -- ...
  your_collection(100) := DBMS_RANDOM.STRING( 'x', 20 );

  OPEN :cursor FOR
  SELECT t.*
  FROM   your_table t
         INNER JOIN
         TABLE( your_collection ) c
         ON t.id = c.COLUMN_VALUE;
END;
/

PRINT cursor;


  1. Upgrade PostgreSQL van 9.6 naar 10.0 op Ubuntu 16.10

  2. LEN() versus DATALENGTH() in SQL Server

  3. tabel- en kolomnaam dynamisch doorgeven met behulp van bindvariabelen

  4. Is er een manier om de output van PL/SQL in Oracle door te spoelen?