Oracle
 sql >> Base de données >  >> RDS >> Oracle

Envoi d'un tableau de valeurs à la procédure Oracle à utiliser dans la clause WHERE IN

Une façon pourrait être d'utiliser un VARRAY pour le PARAM_THAT_WILL_BE _USED_INSIDE_WHERE_IN paramètre et utilisez-le comme décrit ici
Je ne sais pas, cependant, comment l'appeler à partir de c#.

Une autre façon consiste à utiliser varchar2 avec un csv comme vous l'avez indiqué dans votre question mais sans sql dynamique, comme ceci :

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;