我想动态分配 VARRAY 的值。因此,例如,我声明了一个大小为 5 的 varray。在该 varray 中,我想动态插入来自用户输入的 5 个值。这个怎么做 ?
1 回答
1
PL/SQL 是一种用于自主代码的语言。它没有很好的用户交互能力。它不接受用户输入,因此您需要在客户端处理用户输入并将值提交给您的 PL/SQL 程序。在您的情况下,这意味着获取用户输入,将其组装在您的 varray 类型的本地声明变量中,并将该变量作为参数传递给存储过程。
您说您正在使用 Oracle SQL Developer 运行,因此我们可以使用 SQL*Plus 替换变量(使用 & 符号)来接受用户输入。
所以。给定这样的 VARRAY...
create or replace type params_va as varray(5) of varchar2(128);
/
...和这样的玩具程序...
create or replace procedure p1 (p_args in params_va)
is
begin
for i in 1..5 loop
dbms_output.put_line(p_args(i));
end loop;
end;
/
请注意,该过程采用一个 VARRAY 类型的参数。
现在我们可以在 Oracle SQL Developer 中运行以下脚本。会弹出五个对话框,VARRAY中的每个元素一个(严格来说,每个替换变量一个):
declare
l_args params_va := new params_va();
begin
l_args.extend(5);
l_args(1) := '&arg1';
l_args(2) := '&arg2';
l_args(3) := '&arg3';
l_args(4) := '&arg4';
l_args(5) := '&arg5';
p1(l_args);
end;
/
于 2019-09-02T14:35:49.403 回答