Die Beschreibung zum Trigger ist :
Dieser Trigger ist für die Bewertung unserer Hotels zuständig, der die Bewertungen der Kunden speichert und diese dementsprechend hoch und runterzählt mit der jeweiligen Bewertung. Jeder Kunde kann einmal seine Bewertung Bewertung fließt dann in die Gesamtbewertung der Hotel hinein. Je nach Bewertung des Kunden kann die Gesamtbewertung positiver oder negativer werden.
Code:
CREATE OR REPLACE TRIGGER Durchschnittsbewertung
after insert on bewertung
for each row
DECLARE
counter number default 0;
vStern number default 0;
vSterne number default 0;
vAnzahl number default 0;
vBewAnzahl number default 0;
vDurchschnittsbewertung decimal(19,2) default 0;
msg VARCHAR (128);
cursor cBewertungen is
select Stern from Bewertung
where hotel_id = new.hotel_id;
declare continue handler for not found set counter = 1;
open cBewertungen;
Durchschnittsbewertung : loop
fetch cBewertungen into vStern;
if counter = 1 then
leave Durchschnittsbewertung;
end if;
set vSterne = vSterne + vStern;
set vAnzahl = vAnzahl + 1;
end loop Durchschnittsbewertung;
set vDurchschnittsbewertung = vSterne / vAnzahl;
update hotel
set Durchschnittsbewertung = vDurchschnittsbewertung
where hotel_id = new.hotel_id;
select count(Stern) into vBewAnzahl from Bewertung;
close cBewertungen;
end ;
Fehler sind:
20/24 PLS-00103: Fand das Symbol "" als eines der folgenden erwartet wurde: constant exception <an identifier> <a double-quoted delimited-identifier> table columns long double ref char time timestamp interval date binary national character nchar
20/24 PLS-00049: Ungültige Bind-Variable 'LOOP'
Könnt ihr mir bitte behilflich sein ?
Announcement
Collapse
No announcement yet.
Loop- Schleife zeigt Fehler
Collapse
X
-
Loop- Schleife zeigt Fehler
Zuletzt editiert von Christian Marquardt; 24.05.2020, 15:37.Tags: None
-
-
Danke für deine Antwort. das war wirklich hilfreich.
Aber jetzt zeigt der hier ein fehler:
declare continue handler for not found set counter = 1;
mit dem Fehler code PLS-00103.
Leave a comment:
-
Prüfe den Schleifenaufbau
Ein Label wird mit << und >> definiert
<<Durchschnittsbewertung>> loop
Die Zuweisung zu Variablen erfolgt mit
vSterne := vSterne + vStern;
vAnzahl := vAnzahl + 1;
....
vDurchschnittsbewertung:= vSterne / vAnzahl;
Leave a comment:
Leave a comment: