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

时间:2017-10-19 01:40:26

标签: arrays oracle numbers

要将数组数组传递给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;

1 个答案:

答案 0 :(得分:1)

尝试:

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