2013-02-26 59 views
1

我編寫了下面的觸發器,以防止用戶如果類日期與會話所在的星期幾不匹配時就將類分配給會話。帶有編譯錯誤的Oracle觸發器創建

CREATE OR REPLACE TRIGGER trig_alternative_classDate 
AFTER INSERT OR UPDATE ON ALTERNATIVE 
FOR EACH ROW 
DECLARE 
    classdate CHAR; 
    sessionday VARCHAR; 
BEGIN 
    SELECT to_char(to_date(class.class_date), 'Day') INTO classdate, sessions.day INTO sessionday 
    FROM SESSIONS, CLASS, DUAL, LOCATION, ALTERNATIVE 
    WHERE class.class_id = alternative.class_id 
    AND alternative.location_id = location.location_id 
    AND sessions.location_id = location.location_id; 
    IF sessions.day != to_char(to_date(class.class_date), 'Day') 
    THEN raise_application_error(-20999,'Invalid Class Date - Class Date does not match Session Day'); 
    END IF; 
END; 
/

不過,我得到一個錯誤信息,當我運行觸發

Warning: Trigger created with compilation errors. 

SQL> show error trigger trig_alternative_classDate 
Errors for TRIGGER TRIG_ALTERNATIVE_CLASSDATE: 

LINE/COL ERROR 
-------- ----------------------------------------------------------------- 
5/2 PL/SQL: SQL Statement ignored 
5/80 PL/SQL: ORA-00923: FROM keyword not found where expected 

可能有人請幫忙嗎?

回答

2

刪除第二INTO - 僅一成需要:

INTO classdate, sessions.day INTO sessionday 
+0

@Ben湯森 - 你試試?作品? – Art 2013-02-26 15:42:57