SQL> create or replace type myvarray_list as varray(10) of varchar2(50);
  2  /

类型已创建。

SQL> create or replace procedure show_list(
  2  p_varlist in myvarray_list
  3  )
  4  is
  5  str varchar2(50);
  6  begin
  7  for x in 1.. p_varlist.count loop
  8  dbms_output.put_line('p_varlist('||x||')='||p_varlist(x));
  9  end loop;
10  end;
11  /

过程已创建。

SQL> exec show_list(myvarray_list('Oracle','DB2','Sql Server','mySql','DBA'));
p_varlist(1)=Oracle
p_varlist(2)=DB2
p_varlist(3)=Sql Server
p_varlist(4)=mySql
p_varlist(5)=DBA

PL/SQL 过程已成功完成。

SQL>


SQL> declare
  2 mysql varchar2(200);
  3  begin
  4  mysql:='begin show_list(myvarray_list('''||'Oracle'''||','''||'DB2'''||')); end;';
  5  execute immediate mysql;
  6  end;
  7  /
p_varlist(1)=Oracle
p_varlist(2)=DB2

PL/SQL 过程已成功完成。

SQL>