2013-12-16 38 views
-1

任何人都可以幫助我在PL/SQL中執行以下過程。我得到錯誤無法執行存儲過程獲取錯誤

declare 
TYPE c_charge_code_arra IS TABLE OF VARCHAR2(20) INDEX BY PLS_INTEGER; 
myarray c_charge_code_arra; 
out_val number := 12; 
begin 
myarray(0) := 'hg'; 
BRANCH_BKK.air_pkg.airinvoice_pd('01','13070410012','4610032','A','IN','bkkrp_bkk','Asia/Bangkok','56YUSEN',null,myarray,null,'B',out_val); 
end; 
Error at line 1 
ORA-06550: line 7, column 2: 
PLS-00306: wrong number or types of arguments in call to 'AIRINVOICE_PD' 
ORA-06550: line 7, column 2: 
PL/SQL: Statement ignored 

下面是包聲明。當我嘗試執行下面的過程時,出現上述錯誤。提前致謝

CREATE OR REPLACE PACKAGE BRANCH_BKK.air_pkg AS 

TYPE c_charge_code_arra IS TABLE OF VARCHAR2(20) INDEX BY PLS_INTEGER; 


PROCEDURE airinvoice_pd (in_company IN varchar2, 
        in_file_no IN varchar2, 
        c_reference IN varchar2, 
        in_run_option IN varchar2, 
        in_invoice_type IN varchar2, 
        in_user  IN varchar2, 
        c_time_zone in varchar2, 
        in_payor_code IN varchar2, 
        in_payor_reference IN varchar2, 
        i_charge_code IN c_charge_code_arra, 
        in_invoice_number IN varchar2, 
        in_invoice_against IN varchar2, 
        out_message OUT varchar2); 
+0

,你甚至不知道用的什麼錯誤是。 – OldProgrammer

+0

對不完整的問題抱歉。我編輯了這個問題。你能幫我解決嗎? – user1881820

回答

3

問題在於您的myarray聲明。您正在嘗試重新申報在調用腳本的表型,而不是時,你需要聲明在包規範中定義的表類型的變量:

DECLARE 
    myarray BRANCH_BKK.air_pkg.c_charge_code_arra; 
    out_val NUMBER      := 12; 
BEGIN 
    myarray (0) := 'hg'; 
    BRANCH_BKK.air_pkg.airinvoice_pd ('01', 
          '13070410012', 
          '4610032', 
          'A', 
          'IN', 
          'bkkrp_bkk', 
          'Asia/Bangkok', 
          '56YUSEN', 
          NULL, 
          myarray, 
          NULL, 
          'B', 
          out_val 
         ); 
END;