Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Tablica w klauzuli IN() oracle PLSQL

Zakładając, że Twoja kolekcja jest zdefiniowana w SQL, a nie tylko w PL/SQL, możesz użyć TABLE operator (opublikowana definicja nie jest poprawna składniowo -- musisz określić długość dla VARCHAR2 )

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

Ponieważ nie mam twoich tabel, przykład z użyciem SCOTT schemat

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. MySQL odpowiednik Oracle SEQUENCE.NEXTVAL

  2. Oracle Database Security:Audyt bazy danych

  3. Lista elementów formatu liczb w Oracle

  4. Jak utworzyć nową bazę danych po wstępnej instalacji bazy danych Oracle 11g Express Edition?

  5. ORA-1114 Uruchamianie łaty danych