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

Senden eines Arrays von Werten an die Oracle-Prozedur zur Verwendung in der WHERE IN-Klausel

Eine Möglichkeit könnte die Verwendung eines VARRAY sein für PARAM_THAT_WILL_BE _USED_INSIDE_WHERE_IN Parameter und verwenden Sie ihn wie hier beschrieben.
Ich bin mir jedoch nicht sicher, wie ich ihn von c# aus aufrufen soll.

Eine andere Möglichkeit besteht darin, varchar2 mit einer CSV-Datei zu verwenden, wie Sie in Ihrer Frage angegeben haben, jedoch ohne dynamisches SQL, wie folgt:

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;