create procedure berechneVorlesungen() -- lege Prozedur an
begin
declare are done int default 0; -- boolsche Variable
declare prof_name CHAR(16); -- Variable fuer Prof-Name
declare prof_curser cursor for -- definiere Cursor mit
select p.name -- SQL-Abfrage
from Professoren p, Vorlesungen v
where p.persnr = v.gelesenvon;
declare continue handler -- Continue Handler
for sqlstate '02000' set done = 1; -- beendet Schleife
update Professoren -- Attribut bei allen Profs
set anzVorlesungen = 0; -- zuruecksetzen
open prof_curser; -- Cursor ausfuehren
repeat -- while-schleife
fetch prof_curser into prof_name; -- hole naechsten Prof-Namen
if not done then -- solange noch ein Name vorhanden
update Professoren -- erhoehe anzVorlesungen
set anzVorlesungen = -- des entsprechenden Profs
anzVorlesungen + 1
where name = prof_name;
end if;
until done end repeat; -- Ende while-Schleife
close prof_curser; -- Cursor schliessen
end $$