sql - Oracle PL/SQL:如何使用可变数组作为输出参数执行过程?
问题描述
我正在编写一个存储过程,它将接收代码并返回一个或多个 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 进行迭代:
FOR x IN 1..t.COUNT LOOP
dbms_output.put_line(t(x));
END LOOP;
推荐阅读
- c++ - 时间:2019-05-10 标签:c++vector
实施问题 - batch-file - 如何使用 cmd.exe 批处理文件(for 循环)将 JSON 语法转换为另一种语法
- javascript - TypeError:food.map 不是 Reactjs 中的函数
- c# - EF core gives error after adding a function inside "Where" lambda expression [EF-CORE 3.1]
- javascript - export html to PDF in JSPDF
- sql - Masking ID and Name in SQL
- android - Google Play Internal Testing App Rejected
- powershell - PowerShell - get-hotfix on multiple servers - error handling
- unity3d - Unity Rig 重量不会通过动画剪辑立即更新
- elasticsearch - 如何在无痛脚本中深度克隆对象字段