使用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程序中,我该怎么做?
答案 0 :(得分:4)
您不能在Begin END
块内使用EXEC。
从开始结束块中删除EXEC。它应该工作正常。