2017-10-19 14 views
1

Pour passer un tableau de nombre de procédure stockée oracle, j'ai créé un type comme celui-ci:Comment passer un tableau de nombres à une procédure stockée Oracle?

create or replace type wareconfig_array as table of NUMBER; 

Ensuite, je crée ma procédure comme ça, quand je compile, il montre le succès, alors je passe un tableau comme: Lorsque je l'exécute, une erreur se produit: "ORA-06531: Référence à la collection non initialisée" Pouvez-vous me dire ce que j'ai fait de mal? Merci beaucoup!

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; 

Répondre

1

Essayez:

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

en direct (travail) Démo: http://sqlfiddle.com/#!4/af403e/1