如何使用输入参数(Array OF INT)执行程序?

How to execute procedure with input parametr (Varray OF INT)?

    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 类型有意义的实例。声明一个不限制集合中元素数量的嵌套 table 类型几乎肯定更有意义(好吧,我认为你被限制为 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) );
/