错误 PLS-00306:调用 'P_CHECKAVGRATE' PL/SQL 时参数的数量或类型错误:语句被忽略

Error PLS-00306: wrong number or types of arguments in call to 'P_CHECKAVGRATE' PL/SQL: Statement ignored

我刚开始使用 SQL/PLSQL,我正在编写一个从 SOAP api 获取数据的过程。 SOAP 工作正常(通过 soapUI 测试),程序编译成功,但是当我尝试调用它时出现以下错误:

[Error] Execution (7: 90): ORA-06550: line 7, column 90:
PLS-00306: wrong number or types of arguments in call to 'P_CHECKAVGRATE'
ORA-06550: line 7, column 2:
PL/SQL: Statement ignored

我的程序规范:

procedure p_CheckAvgRate(ab in varchar2, bc in NUMBER, cd in NUMBER, 
de in NUMBER, abc out number, bca out varchar2, cab out varchar2);

程序调用:

declare
  aaa number;
  bbb varchar2(200); 
  ccc varchar2(200);
begin
 PacPackage.P_CHECKAVGRATE('abcd', 0, 1, 2, aaa, bbb, ccc);
 DBMS_OUTPUT.PUT_LINE ( 'P_CHECKAVGRATE = ' || PacPackage.P_CHECKAVGRATE );
end;

有人知道问题出在哪里吗?

错误的不是程序本身,而是DBMS_OUTPUT.PUT_LINE调用。您不能使用过程名称作为显示值的“来源”,而是使用单独的变量,例如

DBMS_OUTPUT.PUT_LINE ( 'aaa = ' || aaa ||', bbb = ' || bbb);