sql >> Databasteknik >  >> RDS >> Oracle

Skickar en uppsättning värden till Oracle-proceduren för att använda i WHERE IN-satsen

Ett sätt kan vara att använda en VARRAY för PARAM_THAT_WILL_BE _USED_INSIDE_WHERE_IN parameter och använd den enligt beskrivningen här
Jag är dock inte säker på hur man anropar den från c#.

Ett annat sätt är att använda varchar2 med en csv som du angav i din fråga men utan dynamisk sql, så här:

CREATE PROCEDURE MY_TEST_PROC(
  CUR OUT SYS_REFCURSOR,
  PARAM_THAT_WILL_BE varchar2)
AS
BEGIN
  OPEN CUR FOR 
    SELECT * 
      FROM MY_TABLE 
     WHERE COL1 IN (
        select regexp_substr(PARAM_THAT_WILL_BE, '[^,]+',1,level) p
          from dual t
       connect by level <= regexp_count(PARAM_THAT_WILL_BE, ',') + 1
)
END;


  1. Oracle Date datatype, transformerad till 'ÅÅÅÅ-MM-DD HH24:MI:SS TMZ' via SQL

  2. SQL Server Change Recovery Model

  3. Quickbooks ODBC-drivrutin

  4. Hur man får månaden från ett datum i MySQL