--我前几天刚用过,给你个例子create or replace procedure test_varray
as type varrayType is varray(100) of integer;
 
 varr varrayType := varrayType(); --注意这里
 
begin
     varr.extend(10); --指定数组大小为 10 
     varr(1) := 0;
     dbms_output.put_line(varr(1));
end;
/

解决方案 »

  1.   

    Create or Replace Procedure test_array(val_arrA out arr_ABC) is
    begin
    .....
    exception
    ....
    end;
    arr_ABC 是我在包头定义的一个varray(100) ,我在其他地方调用这个过程,把数组做为OUT参数,
    编译可以通过的,但是在运行的时候每次到数组操作就例外了,说是没有初始化.
      

  2.   

    Create or Replace Procedure test_array(val_arrA out arr_ABC) is
    begin  val_arrA:=arr_ABC();  --try,加上这句.....
    exception
    ....
    end;
      

  3.   

    --my test
    CREATE OR REPLACE PACKAGE pkg_test
    AS
        
        type varrayType is varray(100) of integer;
        
        procedure test_varray
        (
                  v_varr out varrayType
        );END pkg_test;
    /CREATE OR REPLACE PACKAGE BODY pkg_test
    AS    
        procedure test_varray
        (
                  v_varr out varrayType
        )
        as
        begin
             v_varr := varrayType();
             v_varr.extend(10);
             v_varr(1) := 1;
             dbms_output.put_line(v_varr(1));
             
        end test_varray;
    END pkg_test;/