sql >> Databasteknik >  >> RDS >> Oracle

Hur skickar man värden till IN-operatören dynamiskt?

Skapa en samlingstyp:

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

Sedan kan du skicka det till en procedur och använda MEMBER OF operatorn (istället för IN operatör):

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

Om du ansluter från ett externt språk kan du ganska enkelt skicka en array till proceduren (exempel i Java) eller så kan du skapa listan i PL/SQL eller från en avgränsad lista.




  1. Datahandledning:Använda fönsterfunktioner

  2. En lösning för markörstödet är inte en implementerad funktion för SQL Server Parallel DataWarehousing TDS-fel

  3. Kontrollera överlappning av datumintervall i MySQL

  4. Gå till postgresql LIKE-frågan