sql >> Database teknologi >  >> RDS >> Oracle

Sender en række værdier til Oracle-proceduren til brug i WHERE IN-klausulen

En måde kunne være at bruge en VARRAY for PARAM_THAT_WILL_BE _USED_INSIDE_WHERE_IN parameter og brug den som beskrevet her
Jeg er dog ikke sikker på, hvordan man kalder den fra c#.

En anden måde er at bruge varchar2 med en csv, som du sagde i dit spørgsmål, men uden dynamisk sql, sådan her:

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. INDSÆT I ... VÆLG FRA ... PÅ DUBLIKAT NØGLEOPDATERING

  2. Hvordan man skriver en Pandas Dataframe til Django model

  3. Hvordan kan jeg bruge Date Datatype i sql server?

  4. Hvordan UPSERT (FLETT, INDSÆT ... PÅ DUPLIKAT OPDATERING) i PostgreSQL?