我已經在SQL中編寫了這個函數,我不知道爲什麼,但它一直在異常部分返回一個錯誤。我檢查了語法,得到了記錄,但我沒有運氣,有誰會請幫忙嗎?Oracle:異常和錯誤
返回錯誤:
Error on line 83: PLS-00103: Found symbol "EXCEPTION" instead one of the following:
begin case declare end exit for goto if loop mod null pragma raise return select update while with
<<
close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe
create or replace function InsertPeriodoEvento
(NomePeriodo in varchar,
aInizio in integer,
aFine in integer,
NomeEvento1 in varchar,
g1 in integer,
m1 in integer,
a1 in integer,
NomeEvento2 in varchar,
g2 in integer,
m2 in integer,
a2 in integer)
return integer is
id_Periodo number;
begin
savepoint prima_di_tutto;
insert into Periodo (Nome) values (NomePeriodo);
select Id into id_Periodo from Periodo where Nome=NomePeriodo;
if NomeEvento2 is null then
begin
insert into Evento (Nome, Giorno, Mese, Anno, IdPeriodo)
values (NomeEvento1, g1, m2, a2, IdPeriodo);
update Periodo set
AnnoFine = aFine,
IdEventoInizio = (select Id from Evento where Nome = NomeEvento1)
where Periodo.Id = id_Periodo;
end;
else
if NomeEvento1 is null then
begin
insert into Evento (Nome, Giorno, Mese, Anno, IdPeriodo)
values (NomeEvento2, g2, m2, a2, IdPeriodo);
update Periodo set
AnnoInizio = aInizio,
IdEventoFine = (select Id from Evento where Nome = NomeEvento2)
where Periodo.Id = id_Periodo;
end;
else
begin
insert into Evento (Nome, Giorno, Mese, Anno, IdPeriodo)
values (NomeEvento1, g1, m2, a2, IdPeriodo);
insert into Evento (Nome, Giorno, Mese, Anno, IdPeriodo)
values (NomeEvento2, g2, m2, a2, IdPeriodo);
update Periodo set
IdEventoInizio = (select Id from Evento where Nome = NomeEvento1),
IdEventoFine = (select Id from Evento where Nome = NomeEvento2)
where Periodo.Id = id_Periodo;
end;
end if;
commit;
return 1;
EXCEPTION
when OTHERS then
rollback to prima_di_tutto;
return 0;
end InsertPeriodoEvento;
你應該有,直到最後一個的ELSIF(不是 「否則,如果」)。 if()then ... elsif()then ... else()end if; – tbone