2012-02-19 2 views
0

Привет Я использую sqldeveloper, подключенный к серверу oracle. Я пытаюсь изменить дату в понедельник на этой неделе в триггере, но он говорит 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

Это, вероятно, потому, что datediff и dateadd являются функциями 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

Смежные вопросы