oraclepl/SQL:如何使用varray作为out参数执行过程?

oraclepl/SQL:如何使用varray作为out参数执行过程?,sql,oracle,plsql,Sql,Oracle,Plsql,我正在编写一个存储过程,它将接收一个代码并返回一个或多个VARCHAR2值。值的数量将根据程序接收的代码而变化 我不知道这是否是最好的方法,不用说我是初学者,但我创建了一个用户定义的类型和一个表来存储这些值 create or replace type t_desc as varray(15) of varchar2(15); create table all_values(code int, list t_desc); insert into all_values values (0, t

我正在编写一个存储过程,它将接收一个代码并返回一个或多个VARCHAR2值。值的数量将根据程序接收的代码而变化

我不知道这是否是最好的方法,不用说我是初学者,但我创建了一个用户定义的类型和一个表来存储这些值

create or replace type t_desc as varray(15) of varchar2(15);

create table all_values(code int, list t_desc);

insert into all_values values (0, t_desc('a','b','c','d'));
insert into all_values values (1, t_desc('a','b'));
然后,我编写了如下程序:

create or replace procedure teste(v_code int, v_list out t_list) is
begin
    select list into v_list from all_values where code = v_code;
end;

这就是我被困的地方。如何执行此过程以返回我存储在列表列中的值

您必须声明一个变量并将其传递到进程中

declare
  t  t_desc ;
  i int;
begin
  teste(i, t);
end;
要查看结果,您可以通过varray进行Itrate:

FOR x IN 1..t.COUNT LOOP
  dbms_output.put_line(t(x));
END LOOP;

当我在数据库上运行它时,它会成功执行,但输出不会被打印出来。有办法看到结果吗?@Geralt使用循环构造