Error:PLS-00323: 子程序或游标 已在程序包说明中声明, 必须在程序包体中对其进行定义。
1.今天在包中修改了一个函数(添加了一个参数),报了下面的错误Error: PLS-00323: 子程序或游标 pk_Shop_Game 已在程序包说明中声明, 必须在程序包体中对其进行定义。
错误原因:包头里面定义的函数和包体里面函数的参数不同,出现的错误。因为我只在包中的函数里添加了一个参数,而没有相应的修改包头的参数。
2.package中声明的与body中的实现,参数类型或参数个数或参数顺序不一致,或在body中没有相应的实现
example:
create or replace package PKG_RPT_RECUPCOMISS is
PROCEDURE P_RPT_RECUPCOMISS_MAIN(I_TRANSFER_TIME DATE);
PROCEDURE P_RPT_RECUPCOMISS_TMP(I_PROCESS_DATE DATE);
end PKG_RPT_RECUPCOMISS;
create or replace package body PKG_RPT_RECUPCOMISS is
PROCEDURE P_RPT_RECUPCOMISS_MAIN(I_PROCESS_DATE DATE) IS
BEGIN
P_RPT_RECUPCOMISS_TMP(I_PROCESS_DATE);
END P_RPT_RECUPCOMISS_MAIN;
PROCEDURE P_RPT_RECUPCOMISS_TMP(I_PROCESS_DATE DATE) IS
BEGIN
DELETE FROM T_RPT_RECUPCOMISS_TMP T
WHERE t.process_date = I_PROCESS_DATE;
END;
end PKG_RPT_RECUPCOMISS;
报的错就是
Compilation errors for PACKAGE BODY UNIMED_RP_NP_DEV.PKG_RPT_RECUPCOMISS
Error: PLS-00323: subprogram or cursor 'P_RPT_RECUPCOMISS_MAIN' is declared in a package specification and must be defined in the package body
Line: 2
Text: PROCEDURE P_RPT_RECUPCOMISS_MAIN(I_PROCESS_DATE DATE) IS