2017-10-19 4 views
1

은 Oracle 저장 프로 시저에 숫자의 배열을 전달하려면, 나는이 같은 유형의 생성 : 내가 컴파일 할 때오라클 저장 프로 시저에 숫자 배열을 전달하는 방법은 무엇입니까?

create or replace type wareconfig_array as table of NUMBER; 
다음

나는 이런 내 절차를 만들었을, 그 다음 내가 배열 등을 통과 성공을 보여줍니다 은 "ORA-06531가 : 초기화되지 않은 컬렉션에 대한 참조는" 당신이 내가 뭘 잘못했는지 말해 줄 수 내가 그것을 실행할 때 m_array[1,2], 그것은 오류가 발생합니다? 매우 감사합니다!

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