简单的PL / SQL包过程调用。错误:期望以下之一:=。 (@%;

时间:2015-03-14 02:24:34

标签: oracle plsql

使用TOAD for Oracle,我能够成功执行这个接受单个日期参数的包过程。

EXEC COMMERCIAL_PURGE.PERFORM_PURGE (date'2010-04-10');

但如果我把它包围在BEGIN / END块

,我就无法执行相同的语句
BEGIN
    EXEC COMMERCIAL_PURGE.PERFORM_PURGE (date'2010-04-10');
END;
/

十多年来我没有完成PL-SQL编码,即便如此,我也没有这么做。我想要做的是:

DECLARE
    v_CUTOFF_DT DATE;

    BEGIN

    --SET SERVEROUTPUT ON;

    SELECT FIN_IT_RPT.COMMERCIAL_PURGE.GET_PURGE_CUT_OFF_DT INTO v_CUTOFF_DT FROM DUAL;
    DBMS_OUTPUT.PUT_LINE ('The v_CUTOFF_DT=' || v_CUTOFF_DT);

    EXEC FIN_IT_RPT.COMMERCIAL_PURGE.PERFORM_PURGE (v_CUTOFF_DT);

    END;
    / 

我的理解是声明的变量属于BEGIN END块之外。

我得到的错误是:

ORA-06550: line 11, column 6:
PLS-00103: Encountered the symbol "FIN_IT_RPT" when expecting one of the following:

   := . ( @ % ;
The symbol ":=" was substituted for "FIN_IT_RPT" to continue.

如何才能将日期变量成功传递到PERFORM_PURGE程序中,我该怎么做?

1 个答案:

答案 0 :(得分:4)

您不能在Begin END块内使用EXEC。

从开始结束块中删除EXEC。它应该工作正常。