Cursor-Idiosynkrasien
-
Die optionale
FOR UPDATE
-Klausel kann in dieSELECT
-Anweisung aufgenommen werden, ihr Fehlen verhindert jedoch nicht die erfolgreiche Ausführung eines positionierten Updates oder Deletes -
Es sollte darauf geachtet werden, dass die Namen deklarierter Cursor nicht mit Namen kollidieren, die später in Anweisungen für
AS CURSOR
-Klauseln verwendet werden -
Wenn der Cursor nur zum Durchlaufen der Ergebnismenge benötigt wird, ist es fast immer einfacher und weniger fehleranfällig, eine
FOR SELECT
-Anweisung mit derAS CURSOR
-Klausel zu verwenden.Deklarierte Cursor müssen explizit geöffnet, zum Abrufen von Daten verwendet und geschlossen werden.Die KontextvariableROW_COUNT
muss nach jedem Fetch überprüft werden und wenn ihr Wert null ist, muss die Schleife beendet werden.EineFOR SELECT
-Anweisung macht dies automatisch.Dennoch bieten deklarierte Cursor ein hohes Maß an Kontrolle über sequentielle Ereignisse und ermöglichen die parallele Verwaltung mehrerer Cursor.
-
Die
SELECT
-Anweisung kann Parameter enthalten. Zum Beispiel:SELECT NAME || :SFX FROM NAMES WHERE NUMBER = :NUM
Jeder Parameter muss zuvor als PSQL-Variable deklariert worden sein, auch wenn sie als Ein- und Ausgabeparameter stammen.Beim Öffnen des Cursors wird dem Parameter der aktuelle Wert der Variablen zugewiesen.
Warning
|
Instabile Variablen und Cursors
Wenn sich der Wert der PSQL-Variablen, die in der Beachten Sie insbesondere, dass das Verhalten vom Abfrageplan abhängen kann, insbesondere von den verwendeten Indizes.Derzeit gibt es keine strengen Regeln für dieses Verhalten, und dies kann sich in zukünftigen Versionen von Firebird ändern. |