如何将数组数组传递给Oracle存储过程?

问题描述:

要传递数目的阵列以Oracle存储过程中,我创建一个类型是这样的:如何将数组数组传递给Oracle存储过程?

create or replace type wareconfig_array as table of NUMBER; 

然后我创建过程这样的,当我编译,它示出了成功,那么我传递数组等: [1,2]m_array当我运行它,它抛出一个错误:“ORA-06531:引用未初始化的收集”你能告诉我,我做错了什么?非常感谢!

create or replace procedure delete_waregroup(m_array in wareconfig_array) is 
begin 
    for i in 1..m_array.count loop 
     update "warehouse_group" set "deleted"=1 where "id"=m_array(i); 
    end loop; 
    commit; 
EXCEPTION 
    when others THEN 
     save_proc_error('proc',sqlcode,'删除仓库组信息发生异常!',sqlerrm); 
     raise_application_error(-20003,'数据操作异常!异常编码:'|| sqlcode || '异常描述:'|| sqlerrm||dbms_utility.format_error_backtrace()); 
     rollback; ---回滚 
end delete_waregroup; 

尝试:

declare 
    x wareconfig_array; 
begin 
    x := wareconfig_array(1,3); -- initialize an array and fill it with values 
    delete_waregroup(x); 
end; 
/

现场(工作)演示:http://sqlfiddle.com/#!4/af403e/1