Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Enviando uma matriz de valores para o procedimento Oracle para usar na cláusula WHERE IN


Uma maneira pode ser usar um VARRAY para o PARAM_THAT_WILL_BE _USED_INSIDE_WHERE_IN parâmetro e use-o conforme descrito aqui
Não tenho certeza, porém, de como chamá-lo de c#.

Outra maneira é usar varchar2 com um csv como você afirmou em sua pergunta, mas sem sql dinâmico, assim:
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;