Databases Reference
In-Depth Information
END IF;
CLOSE tiere;
END;
Die folgenden Aufrufe
EXECUTE gattungsinfo('Gnu');
EXECUTE gattungsinfo('Hase');
liefern
nicht vorhanden
Es gibt folgende 4 Tiere:
1. Klopfer in Gehege 2.
2. Bunny in Gehege 3.
3. Runny in Gehege 2.
4. Hunny in Gehege 2.
Das Beispiel zeigt den klassischen Weg, wenn ein Cursor inner-
halb einer WHILE-Schleife genutzt wird. Vor dem Schleifenan-
fang wird die erste Zeile gelesen und immer am Anfang der
WHILE-Schleife geprüft, ob beim letzten FETCH eine neue Zei-
le gelesen wurde.
Neben der WHILE-Schleife gibt es auch eine FOR-Schleife zur
effizienten Nutzung von Cursorn, die etwas kürzer, aber dafür
weniger flexibel ist. Die zugehörige Syntax der Schleife sieht
wie folgt aus.
CURSOR mit
WHILE-Schleife
FOR <Variable> IN <Cursorname> [ ( Argumente ) ]
LOOP
<Schleifenrumpf>
END LOOP;
Die <Variable> darf vorher nicht deklariert werden und be-
kommt automatisch den Typ <Cursorname> %ROWTYPE . Der
Cursor wird automatisch am Anfang der Schleife geöffnet und
es findet ein FETCH in <Variable> statt. Die Schleife durchläuft
genau alle Elemente des Cursors. Am Ende der Schleife wird
der Cursor automatisch geschlossen. Die folgende Prozedur ist
eine leichte Abwandlung der vorherigen Prozedur, bei der
nicht geprüft wird, ob es überhaupt Tiere der Gattung gibt.
CREATE OR REPLACE PROCEDURE gattungsinfo2
(gat Art.Gattung%Type)
IS
CURSOR tiere(g Art.Gattung%Type) IS
SELECT *
FROM Tier
WHERE Tier.Gattung=gat;
BEGIN
CURSOR mit
FOR-Schleife
266
Search WWH ::




Custom Search