如何将数组数组传递给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