无法执行存储过程出现错误[重复]

Posted

技术标签:

【中文标题】无法执行存储过程出现错误[重复]【英文标题】:unable to execute a store procedure getting error [duplicate] 【发布时间】:2013-12-16 06:41:12 【问题描述】:

谁能帮我在 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);

【问题讨论】:

你甚至不告诉 use 错误是什么。 抱歉问题不完整。我已经编辑了这个问题。你能帮帮我吗 【参考方案1】:

问题在于您声明 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;

【讨论】:

以上是关于无法执行存储过程出现错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法在 dbo 模式中执行存储过程

oracle 执行存储过程 无法中断 但是是循环执行 怎么办

sqlserver2000定时执行存储过程,出现重复数据

Oracle SQL - 无法创建存储过程

Sql Server中不存在原理dbo

SQL Server 存储过程在查询分析器中执行,但在 C# 中无法正常运行