为了将数字数组传递给 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
关于arrays - 如何将数字数组传递给 Oracle 存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46821653/