2012-02-19 73 views
0

您好我正在使用連接到oracle服務器的sqldeveloper。我試圖將該日期更改爲觸發器當週的星期一,但它說Warning: execution completed with warning,任何人都可以看到我在這裏做錯了嗎?在SQL觸發器中設置日期到星期一

CREATE OR REPLACE TRIGGER trg_week_menu 
BEFORE INSERT OR UPDATE OF week_start ON week_menu FOR EACH ROW 
BEGIN 
    IF DATEPART(dw, :NEW.week_start) != 1 THEN 
    SELECT DATEADD(ww, DATEDIFF(ww, 0, :NEW.week_start), 0) 
    INTO :NEW.week_start 
    FROM sys.dual; 
    END IF; 
END; 

在此先感謝! =)

回答

3

這可能是因爲datediffdateadd是SQL-Server函數,而不是Oracle。

從我瞭解你正在試圖做這應該工作:

CREATE OR REPLACE TRIGGER trg_week_menu 
BEFORE INSERT OR UPDATE OF week_start ON week_menu FOR EACH ROW 
BEGIN 
    IF to_char(:new.week_start,'d') <> 1 THEN 
     :new.week_start := next_day(:new.week_start - 7 
           , 'MONDAY'); 
    END IF; 
END; 
/

但如果我不明白你想要做什麼。 Oracle中有一個number of date functions,你應該知道。

+0

好,好,我會考慮一下,謝謝! =) – geekman92 2012-02-19 20:05:22

相關問題