Oracle
 sql >> база данни >  >> RDS >> Oracle

Изпращане на масив от стойности към процедурата на Oracle за използване в клаузата WHERE IN

Един от начините може да бъде използването на VARRAY за PARAM_THAT_WILL_BE _USED_INSIDE_WHERE_IN параметър и го използвайте, както е описано тук
Не съм сигурен обаче как да го извикам от c#.

Друг начин е да използвате varchar2 с csv, както посочихте във вашия въпрос, но без динамичен sql, като този:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle :изберете максимална стойност от различни колони на същия ред

  2. ORA-28000:акаунтът е заключен Грешка става често

  3. FROM_TZ() Функция в Oracle

  4. как да предам име на таблица като параметър на съхранената процедура?

  5. Oracle 11g - Unpivot