Announcement

Collapse
No announcement yet.

IF-schleife bereitet Probleme

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • IF-schleife bereitet Probleme

    Bucht ein Kunde eine Reise, wird der Trigger ausgelöst. Hat ein Mitarbeiter dieses Jahr eine bestimmte Anzahl (10, 50, 200) an Buchungen Zugeordnet bekommen, erhöht sich sein Mitarbeiterrabatt auf maximal 15%.

    Dazu hab ich den code geschrieben:

    CREATE OR REPLACE TRIGGER betaetigte_buchungen
    AFTER INSERT ON buchung
    FOR EACH ROW
    DECLARE
    v_buchungsanzahl number default 0;

    BEGIN

    select COUNT(*)
    into buchungsanzahl
    from buchung
    where mitarbeiter_id = personalnummer;
    if buchungsanzahl >= 10 and buchungsbetrag< 50 THEN
    rabatt = 5;
    elseif buchungsanzahl >= 50 and buchungsbetrag < 200 THEN
    rabatt = 10;
    elseif buchungsanzahl >= 10 THEN
    rabatt = 15;
    END IF;
    UPDATE mitarbeiter
    mitarbeiter_rabatt = rabatt
    WHERE mitarbeiter_id = NEW.mitarbeiter_id;
    END;

    Aber es zeigt den Fehler bei der IF-Anweisung.

    Könnte einer mir weiterhelfen.
    Zuletzt editiert von Ilknur; 30.05.2020, 23:58.

  • #2
    Es gibt in der Informatik keine IF-Schleifen.
    Und eine Schleife sehe ich in deinem Code nicht
    Wie lautet der Fehler?
    Wieder sind die Zuweisungen falsch rabatt:= 5;
    rabatt ist nicht declariert
    Die deklarierte Variable heißt v_buchungsanzahl; genutzt wird aber buchungsanzahl (auch im select into)

    Das ganze if-Konstruct ist falsch
    Bei diesem Code wird nie eins von den elseif abgearbeitet, wenn buchungsanzahl >=10 ist. Dann ist es auch >=50. Wahrscheinlich ist das and mit buchungsbetrag (diese Variable ist nicht declariert und hat keinen Wert) falsch


    Das update-Statment ist falsch SET mitarbeiter_rabatt
    Warum gibst du als Stichwort MYSQL an, wenn es sich um Oracle handelt?
    Zuletzt editiert von Christian Marquardt; 24.05.2020, 07:15.
    Christian

    Comment


    • #3
      @: Ilknur:

      IF ist eine Verzweigung und keine Schleife.

      Im IF-Statement gibt es kein elseif ! Statt elseif muss du elsif (ohne das 2. e!) schreiben.

      Aber Achtung. Es gibt auch die Möglichkeit im else-Zweig eine neue if-Anweisung zu schreiben.
      Das sieht dann etwa so aus:
      IF ...
      THEN ...
      ELSE IF ...
      THEN ...
      END IF;
      END IF;
      Hierbei handelt es sich um zwei Verzweigungen.

      Comment


      • #4
        Hallo,

        Es gibt in der Informatik keine IF-Schleifen.
        Dafür gibt es eine eigene Website: http://if-schleife.de/ ;-)

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          hahaaahhaa gut
          Christian

          Comment

          Working...
          X