next up previous
Next: PL/SQL Procedures zur Veränderung Up: Anweisungen in PL/SQL-Prozeduren Previous: Erzeugung von HTML-Tabellen aus

Verwendung von Schleifen:

 
In PL/SQL stehen alle in einer prozeduralen Programmiersprache üblichen Schleifenkonstrukte zur Verfügung: WHILE-Schleifen, FOR-Schleifen und ''einfache'' Schleifen. Für unser Informationssystem benötigen wir Schleifen fast ausschließlich dazu, um Cursor zu bearbeiten. Dazu finden wir mit einer ''einfachen'' Schleife das Auslangen. Dabei ist folgender allgemeiner Aufbau zu beachten:
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.




Lehrveranstaltung Living Lectures - Virtual University
Abteilung Angewandte Informatik insbesondere Betriebsinformatik, WU-Wien
10/17/1997