尝试调用程序时PLS-00103

Lit*_*oye 2 oracle triggers plsql pls-00103

尝试编译时,我收到以下错误

错误(16,8):PLS-00103:遇到以下其中一项时遇到符号"SPROLLUPEXPENSEITEM":: =.(@%;符号":="代替"SPROLLUPEXPENSEITEM"继续.

错误(17,15):PLS-00103:当遇到以下情况之一时遇到符号"=":. (*@%= - + </>在是模余数不那么REM <>或=或〜=> = <= <>和或类似的多集||构件SUBMULTISET之间LIKE2样4 likec!

create or replace
TRIGGER tr_ExpenseItem_Rollup
AFTER DELETE OR UPDATE of ExpApprAmt
ON ExpenseItem
FOR EACH ROW
DECLARE
    RollupAmt   Number;
    BlnResult   Boolean;
BEGIN
    IF DELETING THEN
        RollupAmt := -1 * :Old.ExpApprAmt;
    End If;
    IF UPDATING Then
        RollupAmt := :New.ExpApprAmt - :Old.ExpApprAmt;
    End IF;
  Call spRollUpExpenseItem(:New.ERNo,:New.ECNo,RollupAmt,BlnResult);
    If BlnResult := TRUE
        --Additional Logic Here 
    End IF;
END;
Run Code Online (Sandbox Code Playgroud)

我是一名学生而且新,所以任何帮助都会受到赞赏.

Joh*_*yle 5

call不是PL/SQL中的关键字,要运行存储过程,只需使用其名称即可.call从以前删除spRollUpExpenseItem:

create or replace
TRIGGER tr_ExpenseItem_Rollup
AFTER DELETE OR UPDATE of ExpApprAmt
ON ExpenseItem
FOR EACH ROW
DECLARE
    RollupAmt   Number;
    BlnResult   Boolean;
BEGIN
    IF DELETING THEN
        RollupAmt := -1 * :Old.ExpApprAmt;
    End If;
    IF UPDATING Then
        RollupAmt := :New.ExpApprAmt - :Old.ExpApprAmt;
    End IF;
    spRollUpExpenseItem(:New.ERNo,:New.ECNo,RollupAmt,BlnResult);
    If BlnResult = TRUE Then
        --Additional Logic Here 
    End IF;
END;
Run Code Online (Sandbox Code Playgroud)