Databases Reference
In-Depth Information
DBMS_OUTPUT.PUT_LINE('Von '||gat||' gibt es:');
FOR viech IN tiere(gat)
LOOP
DBMS_OUTPUT.PUT_LINE(tiere%ROWCOUNT||'. '
||viech.Tname||' in Gehege '
||viech.Gnr||'.');
END LOOP;
END;
Die folgenden Aufrufe
EXECUTE gattungsinfo2('Gnu');
EXECUTE gattungsinfo2('Hase');
liefern
Von Gnu gibt es:
Von Hase gibt es:
1. Klopfer in Gehege 2.
2. Bunny in Gehege 3.
3. Runny in Gehege 2.
4. Hunny in Gehege 2.
Cursor können nach dem Schließen erneut geöffnet werden,
dabei wird die zugehörige Anfrage erneut ausgeführt. Ein ge-
öffneter Cursor kann nicht ein zweites Mal geöffnet werden.
Falls es hierzu eine Notwendigkeit geben sollte, müsste ein
zweiter identischer Cursor definiert werden.
Wie bereits erwähnt, können beliebige INSERT, UPDATE und
DELETE-Befehle als normale Programmierbefehle in PL/SQL
genutzt werden. Es kann aber auch sinnvoll sein, dass man Än-
derungen direkt an den Stellen durchführen möchte, an denen
gerade der Cursor steht. Dies geht natürlich nur, wenn sich der
Cursor auf genau eine Tabelle und jedes Ergebnis auf eine Spal-
te bezieht. In diesem Fall kann man die Definition des Cursors
um die Angabe FOR UPDATE ergänzen, so dass man in einem
UPDATE-Befehl auf die aktuelle Cursor-Position mit WHERE
CURRENT OF <Cursorname> zugreifen kann.
Im Beispiel sollen die Namen der ausgewählten Gattung um
den Zusatz des Gattungsnamen ergänzt werden. Die zugehöri-
ge Prozedur sieht wie folgt aus.
Cursor mit Ak-
tualisierungsmö
glichkeit
CREATE OR REPLACE PROCEDURE langerName
(gat Art.Gattung%Type)
IS
CURSOR wahl(g Art.Gattung%Type) IS
SELECT *
FROM Tier
267
Search WWH ::




Custom Search