我正在编写一个存储过程,该存储过程将接收代码并返回一个或多个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;
这就是我被困住的地方。如何执行此过程以返回存储在列表列中的值?
答案 0 :(得分:1)
您必须声明一个变量并将其传递给proc。
declare
t t_desc ;
i int;
begin
teste(i, t);
end;
查看您可以通过varray获得的结果:
FOR x IN 1..t.COUNT LOOP
dbms_output.put_line(t(x));
END LOOP;