2014-01-04 4 views
1

Я пытаюсь вставить значения в таблице, как это:Oracle - Проблемы с to_date

insert into Semana (edicao,planeamentosemanal,diaInicio,diaFim) 
values (1,'Introducao a cadeira', to_date('2011/12/12','yyyy/mm/dd'),to_date('2012/07/11','yyyy/mm/dd')); 

Но по какой-то причине я не знаю о последних 2 значений передаются как нуль, так мой триггер выиграл» т, как и предполагалось. Я попытался напечатать значения: new.diaInicio и: new.diaFim, и они равны нулю.

Спусковой крючок:

create or replace TRIGGER "T_SEMANA" before insert on semana 
for each row 
declare 

codigoSemana number; 
diaInicio date; 
diaFim date; 

begin 
--Verificar se existem semanas repetidas 
    begin 

    select s.codigo into codigoSemana from Edicao e 
    join Semana s on e.codigo = s.edicao 
    where e.codigo = :new.edicao and (s.diaInicio = :new.diaInicio or (:new.diaInicio > s.diaInicio and :new.diaInicio < s.diaFim)); 

    exception 
     when no_data_found then 
     null; 

    end; 

--Verificar se a variavel é nula ou nao. Caso nao o seja, nao pode ser inserida 
    if codigoSemana is not null then 
    raise_application_error(-20001,'Erro ao inserir o registo na base de dados.'); 
    end if; 

--Verificar se a semana comeca e acaba dentro do ano lectivo 
    begin 

    select a.diaInicio into diaInicio from Semana s 
    join Edicao e on e.codigo = s.edicao 
    join AnoLectivo a on a.codigo = e.anoLectivo; 

    select a.diaFim into diaFim from Semana s 
    join Edicao e on e.codigo = s.edicao 
    join AnoLectivo a on a.codigo = e.anoLectivo; 

    exception 
     when no_data_found then 
     null; 

    end; 

    if (:new.diaInicio > diaInicio or :new.diaFim < diaFim) then 
    null; 
    else 
    raise_application_error(-20001,'Os dias da semana devem de coincidir com os do ano lectivo.'); 
    end if; 

--Incrementar o código 
    :new.codigo := codsemana.nextval; 

end; 

Что, кажется, проблема?

+0

У вас есть сообщение об ошибке? –

+0

Нет, значения равны нулю. Нет сообщений об ошибках. Это странная вещь. –

+0

Странно, вы выбираете таблицу semana, где установлен триггер. Обычно вы должны получить известную ошибку «ORA-04091 Table is Mutating». –

ответ

0

Скопировано от вопроса:

Проблема заключалась в том, что я пытался получить доступ к таблице, который обстреливал курок. Все, что мне нужно было сделать, это изменить запрос.

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