CREATE OR REPLACE TYPE list_of_int IS
VARRAY(10) OF INT;
CREATE OR REPLACE PROCEDURE my_procedure(
in_lista in list_of_int
)
AS
...
exec my_procedure( [1,2,3] );
如何使用输入参数 VARRAY 执行程序?
CREATE OR REPLACE TYPE list_of_int IS
VARRAY(10) OF INT;
CREATE OR REPLACE PROCEDURE my_procedure(
in_lista in list_of_int
)
AS
...
exec my_procedure( [1,2,3] );
如何使用输入参数 VARRAY 执行程序?
你可以做这样的事情
CREATE OR REPLACE TYPE list_of_int IS
VARRAY(10) OF INT;
/
CREATE OR REPLACE PROCEDURE my_procedure(
in_lista in list_of_int
)
AS
begin
for i in 1..in_lista.count
loop
dbms_output.put_line( in_lista(i) );
end loop;
end;
/
exec my_procedure( list_of_int(1, 2, 3) );
/
但实际上,我还没有遇到过声明varray
类型有意义的实例。声明一个不限制集合中元素数量的嵌套表类型几乎肯定会更有意义(好吧,我认为你被限制在 2^32 或任何你可以适应 PGA 的范围内,但如果如果你接近那个,你正在做一些严重错误的事情)。如果有人想要传递 11 个元素的列表,我想不出我想要的代码故意死掉的情况。
CREATE OR REPLACE TYPE int_t IS
table OF INT;
/
CREATE OR REPLACE PROCEDURE my_procedure(
in_lista in int_t
)
AS
begin
for i in 1..in_lista.count
loop
dbms_output.put_line( in_lista(i) );
end loop;
end;
/
exec my_procedure( int_t(1, 2, 3) );
/