Simple PL/SQL Package Procedure call. Error: Expect one of the following := . ( @ % ;
Simple PL/SQL Package Procedure call. Error: Expect one of the following := . ( @ % ;
使用 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 过程中?
您不能在 Begin END
块内使用 EXEC。
从开始结束块中删除 EXEC。到时候应该没问题。
使用 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 过程中?
您不能在 Begin END
块内使用 EXEC。
从开始结束块中删除 EXEC。到时候应该没问题。