PLS-00103 при попытке вызвать процедуру
При попытке компиляции я получаю следующие ошибки
Ошибка (16,8): PLS-00103: Обнаружен символ "SPROLLUPEXPENSEITEM" при ожидании одного из следующего::= . ( @ %; Символ ": =" был заменен на "SPROLLUPEXPENSEITEM" для продолжения.
а также
Ошибка (17,15): PLS-00103: Обнаружен символ "=" при ожидании одного из следующего: . ( * @ % & = - + > в in это остаток от мода не rem затем <> или!= или ~= >= <= <> и т.п. like2 like4 likec между || мультимножеством члена submultiset
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;
Я студент и очень новичок в этом, поэтому любая помощь будет оценена.
2 ответа
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;
Я считаю, что ваша проблема в последнем утверждении if. Ты пропускаешь Then
и вы используете :=
который является оператором присваивания, вы должны использовать =
вместо.
If BlnResult = TRUE Then
или просто
If BlnResult Then