我想动态分配VARRAY的值。例如,我声明了一个大小为5的varray,在这个varray中,我想动态插入用户输入的5个值。该怎么做呢?
发布于 2019-09-02 22:35:49
PL/SQL是一种用于自治代码的语言。它并不具备强大的用户交互能力。它不接受用户输入,因此您需要在客户端处理用户输入,并将值提交给PL/SQL程序。在您的示例中,这意味着获取用户输入,将其组装到您的varray类型的本地声明的变量中,并将该变量作为参数传递给存储过程。
您说您正在使用Oracle SQL Developer运行,因此我们可以使用SQL*Plus替代变量(使用与符号)来接受用户输入。
所以。像这样的VARRAY ..。
create or replace type params_va as varray(5) of varchar2(128);
/...and一个像这样的玩具程序...
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中运行以下脚本。它将弹出5个对话框,每个对话框对应于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;
/https://stackoverflow.com/questions/57755912
复制相似问题