Oracle - to_date的问题

时间:2014-01-04 16:19:03

标签: 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个值是否为null,因此我的触发器将无法正常工作。我试图打印:new.diaInicio和:new.diaFim的值,它们都是null。

触发器是:

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;

什么似乎是问题?

1 个答案:

答案 0 :(得分:0)

复制自问题:

问题是我试图访问触发触发器的表。我所要做的就是改变查询。