编辑:经过一些建议后,这就是我现在收到的这些错误
Create or Replace Trigger Late_Rule
BEFORE INSERT ON Transaction
For each Row
DECLARE
Fee Number;
BEGIN
Select Date_Due, Date_Returned
From Transaction;
If new.Date_Returned > new.Date_Due
THEN
Fee := (new.Date_Returned - new.Date_Due) * 2;
END IF;
Update Member
Set Unpaid_Bal = Unpaid_Bal + Fee;
end;
/
show error;
7/1 PLS-00428:SELECT语句中应该有一个INTO子句
10/1 PL / SQL:语句被忽略
10/4 PLS-00201:标识符' NEW.DATE_RETURNED'必须声明
答案 0 :(得分:1)
您无法为减法结果(左值)指定值 - 您需要将其指定给变量。
编辑:
pl / sql中的赋值运算符为:=
,而不是=
:
Create or Replace Trigger Late_Rule
BEFORE INSERT ON Transaction
For each Row
DECLARE
ChargeDays Number;
Fee Number;
BEGIN
If new.Date_Returned > new.Due_Date
THEN
Fee := (new.Date_Returned - new.Due_Date) * 2;
ELSE
Fee := 0
END IF;
Update Member
Where Unpaid_Bal = Unpaid_Bal + Fee;
end;
/
show error;
答案 1 :(得分:0)
尝试使用:
DATEDIFF ( datepart , startdate , enddate )
在你的例子中,它将是:
...
THEN DATEDIFF ( dd , new.Date_Returned , new.Due_Date )
dd
代表哪一天。