for SCHLEIFENVARIABLE in CURSORNAME loop . . . end loop;Dabei steht die SCHLEIFENVARIABLE für eine Variable, die den Ablauf der Schleife kontrolliert. Üblicherweise wird sie mit i benannt. Für CURSORNAME muß natürlich der Name des Cursors eingesetzt werden, dessen Ergebnis mittels einer Schleife ausgegeben werden soll. Die . . . stehen für weitere Anweisungen. Betrachten wir dazu folgendes Beispiel einer kompletten PL/SQL-Procedure:
create or replace procedure invsel
is
Cursor c is
SELECT bestnr, autor, titel FROM bestellungen
WHERE bestnr <> 0
ORDER BY autor;
Begin
htp.p('<BODY BGCOLOR=#ffffff>');
htp.p('<table border=5>');
htp.tableRowOpen;
htp.tableData('<b>Bestellnummer</b>');
htp.tableData('<b>Autor</b>');
htp.tableData('<b>Titel</b>');
htp.tableRowClose;
for i in c loop
htp.tableRowOpen;
htp.tableData(i.bestnr);
htp.tableData(i.autor);
htp.tableData(i.titel);
htp.tableRowClose;
end loop;
htp.tableClose;
end;
/
show errors
grant execute on invsel to hr;
grant select on bestellungen to hr;
Die Anweisungen, die zwischen loop und end loop stehen
werden solange ausgeführt, solange der Cursor c Daten
beinhaltet. ''SQL-mäßig'' formuliert heißt das, es werden solange
Daten ausgegeben, solange die als Cursor c definierte
SELECT-Anweisung weitere Zeilen erzeugt.