2017-10-19 116 views
1

要傳遞數目的陣列以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; 

回答

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

相關問題