Servus,
versuche mich gerade an nem Trigger, leider tritt immer die folgende Fehlermeldung auf:
Error(31,15): PLS-00103: Fand das Symbol "END" als eines der folgenden erwartet wurde: ( - + case mod new not null <an identifier> <a double-quoted delimited-identifier> <a bind variable> avg count current exists max min prior sql stddev sum variance execute forall merge time timestamp interval date <a string literal with character set specification> <a number> <a single-quoted SQL string> pipe <ein alternativ in Anführungszeichen gesetztes Zeichenfolgenliteral mit Zeichensatzangabe> <eine alter
Benutze Oracle 10g
TRIGGER:
-----------------------------------------------------------------------------
CREATE OR REPLACE
TRIGGER IU_LEHRVER_AFTER_STMT AFTER INSERT OR UPDATE ON LEHRVERANSTALTUNGEN
DECLARE
old_fachid FACH.fach%TYPE;
--in dieser Var. wird beim update die alte Fachid gespeichert
cursor lehrv is
select lehrid, bezeichung from LEHRVERANSTALTUNGEN
where stand_alone = 1 for update;
BEGIN
IF INSERTING then
for item in lehrv loop
execute:= package_fach.insert_FACH(fachseq.nextval, item.bezeichnung, item.lehrid);
end loop;
END IF;
IF UPDATING then
for item in lehrv
loop
select fachid into old_fachid from fach where SA_Lehrvera=item.lehrid;
--Die alte Fachid wird gespeicht, das sich diese beim Update
--nicht ändern darf!!
if old_fachid is null then
execute:= package_fach.insert_fach(fachseq.nextval, item.bezeichnung, item.lehrid);
ELSIF
-- execute:= package_fach.DELETE_Fach(item.lehrid);
--Beim Update muss der alte Zustand gelöscht werden, anderfalls
--würde man ein und die selbe Lehrva mehrfach als Fach eintragen
--execute package_fach.insert(old_fachid, item.bezeichnung, item.lehrid);
end if;
--Beim update auf Fach muss die alte Fachid erhalten bleiben,
end loop;
END IF;--END if updating
END IU_LEHRVER_AFTER_STMT;
Kann ja eigentlich nur ein Syntax error sein, vielleicht kann mir einer von euch auf die Sprünge helfen
Danke
versuche mich gerade an nem Trigger, leider tritt immer die folgende Fehlermeldung auf:
Error(31,15): PLS-00103: Fand das Symbol "END" als eines der folgenden erwartet wurde: ( - + case mod new not null <an identifier> <a double-quoted delimited-identifier> <a bind variable> avg count current exists max min prior sql stddev sum variance execute forall merge time timestamp interval date <a string literal with character set specification> <a number> <a single-quoted SQL string> pipe <ein alternativ in Anführungszeichen gesetztes Zeichenfolgenliteral mit Zeichensatzangabe> <eine alter
Benutze Oracle 10g
TRIGGER:
-----------------------------------------------------------------------------
CREATE OR REPLACE
TRIGGER IU_LEHRVER_AFTER_STMT AFTER INSERT OR UPDATE ON LEHRVERANSTALTUNGEN
DECLARE
old_fachid FACH.fach%TYPE;
--in dieser Var. wird beim update die alte Fachid gespeichert
cursor lehrv is
select lehrid, bezeichung from LEHRVERANSTALTUNGEN
where stand_alone = 1 for update;
BEGIN
IF INSERTING then
for item in lehrv loop
execute:= package_fach.insert_FACH(fachseq.nextval, item.bezeichnung, item.lehrid);
end loop;
END IF;
IF UPDATING then
for item in lehrv
loop
select fachid into old_fachid from fach where SA_Lehrvera=item.lehrid;
--Die alte Fachid wird gespeicht, das sich diese beim Update
--nicht ändern darf!!
if old_fachid is null then
execute:= package_fach.insert_fach(fachseq.nextval, item.bezeichnung, item.lehrid);
ELSIF
-- execute:= package_fach.DELETE_Fach(item.lehrid);
--Beim Update muss der alte Zustand gelöscht werden, anderfalls
--würde man ein und die selbe Lehrva mehrfach als Fach eintragen
--execute package_fach.insert(old_fachid, item.bezeichnung, item.lehrid);
end if;
--Beim update auf Fach muss die alte Fachid erhalten bleiben,
end loop;
END IF;--END if updating
END IU_LEHRVER_AFTER_STMT;
Kann ja eigentlich nur ein Syntax error sein, vielleicht kann mir einer von euch auf die Sprünge helfen
Danke