Trigger ERORR 00103

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Trigger ERORR 00103

    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

    TRIGGER:
    -----------------------------------------------------------------------------

    Source Code

    1. CREATE OR REPLACE
    2. TRIGGER IU_LEHRVER_AFTER_STMT AFTER INSERT OR UPDATE ON LEHRVERANSTALTUNGEN
    3. DECLARE
    4. old_fachid FACH.fach%TYPE;
    5. --in dieser Var. wird beim update die alte Fachid gespeichert
    6. cursor lehrv is
    7. select lehrid, bezeichung from LEHRVERANSTALTUNGEN
    8. where stand_alone = 1 for update;
    9. BEGIN
    10. IF INSERTING then
    11. for item in lehrv loop
    12. execute:= package_fach.insert_FACH(fachseq.nextval, item.bezeichnung, item.lehrid);
    13. end loop;
    14. END IF;
    15. IF UPDATING then
    16. for item in lehrv
    17. loop
    18. select fachid into old_fachid from fach where SA_Lehrvera=item.lehrid;
    19. --Die alte Fachid wird gespeicht, das sich diese beim Update
    20. --nicht ändern darf!!
    21. if old_fachid is null then
    22. execute:= package_fach.insert_fach(fachseq.nextval, item.bezeichnung, item.lehrid);
    23. ELSIF
    24. -- execute:= package_fach.DELETE_Fach(item.lehrid);
    25. --Beim Update muss der alte Zustand gelöscht werden, anderfalls
    26. --würde man ein und die selbe Lehrva mehrfach als Fach eintragen
    27. --execute package_fach.insert(old_fachid, item.bezeichnung, item.lehrid);
    28. end if;
    29. --Beim update auf Fach muss die alte Fachid erhalten bleiben,
    30. end loop;
    31. END IF;--END if updating
    32. END IU_LEHRVER_AFTER_STMT;
    Display All


    Kann ja eigentlich nur ein Syntax error sein, vielleicht kann mir einer von euch auf die Sprüunge helfen

    Danke
  • Habs selbst rausgefunden

    Source Code

    1. CREATE OR REPLACE
    2. TRIGGER IU_LEHRVER_AFTER_STMT AFTER INSERT OR UPDATE ON LEHRVERANSTALTUNGEN
    3. DECLARE
    4. old_fachid FACH.fachid%TYPE;
    5. --in dieser Var. wird beim update die alte Fachid gespeichert
    6. cursor lehrv is
    7. select lehrid, bezeichnung from LEHRVERANSTALTUNGEN
    8. where stand_alone = 1 for update;
    9. BEGIN
    10. IF INSERTING then
    11. for item in lehrv loop
    12. package_fach.insert_FACH(item.bezeichnung, item.lehrid);
    13. end loop;
    14. END IF;
    15. IF UPDATING then
    16. for item in lehrv
    17. loop
    18. select fachid into old_fachid from fach where SA_Lehrvera=item.lehrid;
    19. --Die alte Fachid wird gespeicht, das sich diese beim Update
    20. --nicht ändern darf!!
    21. if old_fachid is null then
    22. package_fach.insert_fach(item.bezeichnung, item.lehrid);
    23. ELSE
    24. package_fach.DELETE_Fach(item.lehrid);
    25. --Beim Update muss der alte Zustand gelöscht werden, anderfalls
    26. --würde man ein und die selbe Lehrva mehrfach als Fach eintragen
    27. package_fach.insert_fach(old_fachid, item.bezeichnung, item.lehrid);
    28. --Hier aufruf der Überladenen Methode package_fach.insert_fachs
    29. END IF;
    30. --Beim update auf Fach muss die alte Fachid erhalten bleiben
    31. end loop;
    32. END IF;--END if updating
    33. END IU_LEHRVER_AFTER_STMT;
    Display All