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 $$