sql >> Databasteknik >  >> RDS >> Oracle

PL/SQL - Använd listvariabel i Where In-klausul

Använd en samling:

CREATE TYPE Varchar2TableType AS TABLE OF VARCHAR2(200);

Eller använd en inbyggd typ som SYS.ODCIVARCHAR2LIST eller 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. Hur lägger jag till index i MySQL-tabeller?

  2. Hur undkommer jag ett reserverat ord i Oracle?

  3. Vad är skillnaden mellan backtick och hakparentes i SQL-satser?

  4. Hur man kommer igång med SQL Server på Azure