2014-12-05 32 views
0

我想每天都會觸發一個電影獲得回報遲到2 $獲得添加到未付餘額。退貨和截止日期位於交易表中,未付餘額位於成員表中。這是我迄今爲止,並且我得到任何幫助或建議的錯誤將是偉大的我真的很難與這一個。觸發器如何解決這些錯誤

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:INTO子句預計在SELECT語句
10/1 PL/SQL:語句被忽略
10/4 PLS-00201:標識符 'NEW.DATE_RETURNED' 必須被宣佈爲

回答

1

您必須在new之前使用:。此外,我認爲你不需要select一句:

Create or Replace Trigger Late_Rule 
BEFORE INSERT ON Transaction 
For each Row 
DECLARE 

Fee Number; 

BEGIN 


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; 

讓你得到任何錯誤我知道。

+0

PLS-00049:壞綁定變量'DATE_RETURNED'我得到的日期相同的錯誤,以及爲什麼我認爲我需要一個選擇語句 – Erica 2014-12-05 17:57:11

+0

我犯了一個錯誤。請立即檢查。 – Aramillo 2014-12-05 18:05:31

+0

它工作只是問題是它更新每一個成員的未付餘額,所以我認爲它與我的更新聲明的東西謝謝! – Erica 2014-12-05 18:12:04

相關問題