Problem bei trigger erstellung



  • Hallo Leute,
    bin ziemlich neu bei der Sache Datenbank erstellung...
    ich wollte zum Probe eine aufgabe machen..
    Habe mir TOAD heruntergeladen
    in ORACLE alle einstelungen usw gemacht
    Tabellen hab ich auch erstellt mit primary schlüsseln, foreign schlüsseln..

    ich kann aber irgendwie kein trigger erstellen
    hier ist mein trigger code

    CREATE OR REPLACE TRIGGER HR.TRIGGER_LAGER
    BEFORE INSERT OR UPDATE
    ON HR.GELIEFERT
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    DECLARE
    tmpVar NUMBER;
    BEGIN
      tmpVar := 0;
      tmpVar := lieferungpruefen(:NEW.artikelnr);
      tmpVar := tmpVar - :NEW.anzhal;
    
      IF tmpVar < 0 THEN
      	 RAISE_APPLICATION_ERROR(-7937, 'Nicht genug auf Lager!');
      ELSE
      	  tmpVar := leferungumbuchen(:NEW.artikelnr, :NEW.anzhal);
      END IF;  
    END;
    

    fehler code ist es das hier:
    **5/13 PLS-00201: Bezeichner 'LIEFERUNGPRUEFEN' muss deklariert werden
    5/3 PL/SQL: Statement ignored
    11/16 PLS-00201: Bezeichner 'LEFERUNGUMBUCHEN' muss deklariert werden
    11/6 PL/SQL: Statement ignored
    **

    wie kann ich sie deklarieren 😞



  • Na wenn du Funktionen verwendest dann sollten die auch vorhanden sein.
    Sagt doch schon die Fehlermeldung.



  • Die Funktionen sind in deinem Scope nicht sichtbar, also sind sie entweder nicht vorhanden oder dir fehlen die Rechte. Vllt. fehlt auch nur die Angabe das Schemas bzw. Packages, in dem die Funktionen liegen. 😕

    Grüße
    don_basto



  • @don_basto: wolltest Du nur irgendetwas schreiben oder unterscheidet sich deine Antwort von meiner.



  • Hi Unix-Tom,

    ich wollte darauf hinweisen, dass 'nicht vorhanden' nicht heißt, dass sie nicht da ist. Ich bin schon mehrmals drüber gestolpert, dass ich eine Funktion nicht finde, obwohl ich sie kurz vorher eingespielt habe. Deswegen die Bemerkung zu den Rechten.

    Grüße
    don_basto

    PS: Jippie, schon wieder ein Posting 😉



  • Unix-Tom schrieb:

    Na wenn du Funktionen verwendest dann sollten die auch vorhanden sein.
    Sagt doch schon die Fehlermeldung.

    da hast du recht gehabt ^^



  • MuMi schrieb:

    Hallo Leute,
    bin ziemlich neu bei der Sache Datenbank erstellung...
    ich wollte zum Probe eine aufgabe machen..
    Habe mir TOAD heruntergeladen
    in ORACLE alle einstelungen usw gemacht
    Tabellen hab ich auch erstellt mit primary schlüsseln, foreign schlüsseln..

    ich kann aber irgendwie kein trigger erstellen
    hier ist mein trigger code

    CREATE OR REPLACE TRIGGER HR.TRIGGER_LAGER
    BEFORE INSERT OR UPDATE
    ON HR.GELIEFERT
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    DECLARE
    tmpVar NUMBER;
    BEGIN
      tmpVar := 0;
      tmpVar := lieferungpruefen(:NEW.artikelnr);
      tmpVar := tmpVar - :NEW.anzhal;
      
      IF tmpVar < 0 THEN
      	 RAISE_APPLICATION_ERROR(-7937, 'Nicht genug auf Lager!');
      ELSE
      	  tmpVar := leferungumbuchen(:NEW.artikelnr, :NEW.anzhal);
      END IF;  
    END;
    

    fehler code ist es das hier:
    **5/13 PLS-00201: Bezeichner 'LIEFERUNGPRUEFEN' muss deklariert werden
    5/3 PL/SQL: Statement ignored
    11/16 PLS-00201: Bezeichner 'LEFERUNGUMBUCHEN' muss deklariert werden
    11/6 PL/SQL: Statement ignored
    **

    wie kann ich sie deklarieren 😞


Anmelden zum Antworten