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

Масив в клауза IN() oracle PLSQL

Ако приемем, че вашата колекция е дефинирана в SQL, а не само в PL/SQL, можете да използвате TABLE оператор (дефиницията, която сте публикували, не е синтактично валидна - ще трябва да посочите дължина за VARCHAR2 )

AND p.plc_status IN (SELECT column_value
                       FROM TABLE( plcListchar ))

Тъй като нямам вашите таблици, пример с SCOTT схема

SQL> create type ename_tbl is table of varchar2(30);
  2  /

Type created.

SQL> ed
Wrote file afiedt.buf

  1  declare
  2    l_enames ename_tbl := ename_tbl( 'KING', 'SMITH' );
  3  begin
  4    for i in (select *
  5                from emp
  6               where ename in (select column_value
  7                                 from table( l_enames )))
  8    loop
  9      dbms_output.put_line( 'ENAME = ' || i.ename );
 10    end loop;
 11* end;
SQL> /
ENAME = KING
ENAME = SMITH

PL/SQL procedure successfully completed.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. типовете локални колекции не са разрешени в SQL изрази

  2. Изчисляване на възрастта от рожден ден със задействане на oracle plsql и вмъкване на възрастта в таблицата

  3. как да използвате tns записи с драйвери за макромедия за Oracle

  4. Как да генерирам целия DDL на схема на Oracle (скриптируема)?

  5. Как да създадете схема в Oracle с помощта на SQL Developer?