sp_cursorexecute (Transact-SQL)
Erstellt einen Cursor, der auf dem von sp_cursorprepare erstellten Ausführungsplan basiert, und füllt ihn auf. Diese mit sp_cursorprepare gekoppelte Prozedur verfügt über die gleiche Funktion wie sp_cursoropen, ist jedoch in zwei Phasen unterteilt. sp_cursorexecute wird aufgerufen, indem ID =4 in einem TDS (Tabular Data Stream)-Paket angegeben wird.
Transact-SQL-Syntaxkonventionen
Syntax
sp_cursorexecute prepared_handle, cursor
[ , scrollopt [ OUTPUT ]
[ , ccopt [ OUTPUT ]
[ ,rowcount OUTPUT [ ,bound param] [,...n] ] ] ] ]
Argumente
prepared_handle
Der vorbereitete, von sp_cursorprepare zurückgegebene Anweisungshandlewert. prepared_handle ist ein erforderlicher Parameter, der einen int-Eingabewert erfordert.cursor
Der von SQL Server generierte Cursorbezeichner. cursor ist ein erforderlicher Parameter, der für alle nachfolgenden Prozeduren angegeben werden muss, die sich auf den Cursor auswirken, z. B. sp_cursorfetchscrollopt
Option für den Bildlauf. scrollopt ist ein optionaler Parameter, der einen int-Eingabewert erfordert. Der sp_cursorexecute scrollopt-Parameter weist die gleichen Wertoptionen wie für sp_cursoropen auf.Hinweis Der PARAMETERIZED_STMT-Wert wird nicht unterstützt.
Wichtig Wenn ein scrollopt-Wert nicht angegeben wird, lautet der Standardwert unabhängig von dem in sp_cursorprepare angegebenen scrollopt -Wert KEYSET.
ccopt
Option für die Währungssteuerung. ccopt ist ein optionaler Parameter, der einen int-Eingabewert erfordert. Der sp_cursorexecute ccopt-Parameter weist die gleichen Wertoptionen wie für sp_cursoropen auf.Wichtig Wenn ein ccopt-Wert nicht angegeben wird, lautet der Standardwert unabhängig von dem in sp_cursorprepare angegebenen ccopt-Wert OPTIMISTIC.
rowcount
Ein optionaler Parameter, der die Anzahl der mit AUTO_FETCH zu verwendenden Fetchpufferzeilen angibt. Der Standardwert ist 20 Zeilen. Das Verhalten von rowcount ist unterschiedlich, je nachdem, ob der Parameter als Eingabewert oder Rückgabewert zugewiesen wird.Als Eingabewert
Als Rückgabewert
Wenn AUTO_FETCH mit FAST_FORWARD-Cursorn angegeben wird, stellt rowcount die Anzahl der Zeilen dar, die im Fetchpuffer platziert werden sollen.
Stellt die Anzahl der Zeilen im Resultset dar. Wenn der scrollopt-Wert AUTO_FETCH angegeben wird, gibt rowcount die Anzahl von Zeilen zurück, die in den Fetchpuffer abgerufen wurden.
bound_param
Gibt die optionale Verwendung zusätzlicher Parameter an.Hinweis Alle nach dem fünften Parameter übergebenen Parameter werden als Eingabeparameter an den Anweisungsplan übergeben.
Rückgabecodewert
rowcount kann folgende Werte zurückgeben:
Wert |
Beschreibung |
---|---|
-1 |
Die Anzahl der unbekannten Zeilen. |
-n |
Eine asynchrone Auffüllung ist wirksam. |
Hinweise
scrollopt-Parameter und ccopt-Parameter
scrollopt und ccopt sind hilfreich, wenn die zwischengespeicherten Pläne für den Servercache vorzeitig entfernt werden. In diesem Fall muss das vorbereitete Handle, durch das die Anweisung identifiziert wird, neu kompiliert werden. Die Werte des scrollopt-Parameters und des ccopt -Parameters müssen mit den Werten übereinstimmen, die in der ursprünglichen Anforderung an sp_cursorprepare gesendet wurden.
Hinweis |
---|
PARAMETERIZED_STMT sollte scrollopt nicht zugewiesen werden. |
Nicht übereinstimmende Werte bewirken eine Neukompilierung der Pläne, wodurch Vorbereitungs- und Ausführungsvorgänge negiert werden.
Überlegungen zu RPC und TDS
Das RPC-RETURN_METADATA-Eingabeflag kann auf 1 festgelegt werden. Dadurch wird angefordert, dass Metadaten zur SELECT-Liste des Cursors im TDS-Datenstrom zurückgegeben werden.