Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Datenbank in Microsoft Fabric
Kompiliert einen Plan für die gesendete Cursoranweisung oder den gesendeten Batch, erstellt dann den Cursor und füllt ihn auf.
sp_cursorprepexec kombiniert die Funktionen von sp_cursorprepare und sp_cursorexecute. Diese Prozedur wird aufgerufen, indem in einem TDS-Paket (Tabular Data Stream) angegeben ID = 5 wird.
Transact-SQL-Syntaxkonventionen
Syntax
sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
[ , scrollopt [ , ccopt [ , rowcount ] ] ]
[ , '@parameter_name [ , ...n ]' ]
Argumente
Wichtig
Argumente für erweiterte gespeicherte Prozeduren müssen in der spezifischen Reihenfolge eingegeben werden, wie im Abschnitt Syntax beschrieben. Wenn die Parameter außerhalb der Reihenfolge eingegeben werden, tritt eine Fehlermeldung auf.
vorbereiteter Handle
Ein VON SQL Server generierter Handlebezeichner . Der vorbereitete Handle-Parameter ist erforderlich und gibt int zurück.
Cursor
Der sql Server generierte Cursorbezeichner . Der Cursorparameter ist ein erforderlicher Parameter, der für alle nachfolgenden Prozeduren angegeben werden muss, die auf diesen Cursor reagieren, z sp_cursorfetch. B. .
params
Identifiziert parametrisierte Anweisungen. Die params -Definition der Variablen wird in der Anweisung an die Stelle der Parametermarkierungen gesetzt. Der Parameter "params" ist erforderlich. Wenn angegeben, ruft Params einen ntext-, nchar- oder nvarchar-Eingabewert auf.
Hinweis
Verwenden Sie eine ntext-Zeichenfolge als Eingabewert, wenn die Anweisung parametrisiert wird, und der Scrollopt-PARAMETERIZED_STMT Wert ist EIN.
Anweisung
Definiert das Resultset des Cursors. Der Anweisungsparameter ist erforderlich und ruft einen ntext-, nchar- oder nvarchar-Eingabewert auf.
Hinweis
Die Regeln zum Angeben des Anweisungswerts sind mit sp_cursoropen identisch, mit der Ausnahme, dass der Datentyp der Anweisungszeichenfolge ntext sein muss.
Optionen
Ein optionaler Parameter, der eine Beschreibung der Spalten im Cursorresultset zurückgibt. Der Optionsparameter erfordert den folgenden Int-Eingabewert .
| Wert | Beschreibung |
|---|---|
0x0001 |
RETURN_METADATA |
scrollopt
Option für den Bildlauf. Der Scrollopt-Parameter ist optional. Wenn angegeben, erfordert Scrollopt einen der folgenden Int-Eingabewerte .
| Wert | Beschreibung |
|---|---|
0x0001 |
KEYSET |
0x0002 |
DYNAMIC |
0x0004 |
FORWARD_ONLY |
0x0008 |
STATIC |
0x10 |
FAST_FORWARD |
0x1000 |
PARAMETERIZED_STMT |
0x2000 |
AUTO_FETCH |
0x4000 |
AUTO_CLOSE |
0x8000 |
CHECK_ACCEPTED_TYPES |
0x10000 |
KEYSET_ACCEPTABLE |
0x20000 |
DYNAMIC_ACCEPTABLE |
0x40000 |
FORWARD_ONLY_ACCEPTABLE |
0x80000 |
STATIC_ACCEPTABLE |
0x100000 |
FAST_FORWARD_ACCEPTABLE |
Aufgrund der Möglichkeit, dass die angeforderte Option für den durch Anweisung definierten Cursor nicht geeignet ist, dient dieser Parameter sowohl als Eingabe als auch als Ausgabe. In solchen Fällen weist SQL Server einen geeigneten Typ zu und ändert diesen Wert.
Kcopt
Option für die Parallelitätssteuerung. Der Ccopt-Parameter ist optional. Wenn angegeben, erfordert der Ccopt-Parameter einen der folgenden Int-Eingabewerte .
| Wert | Beschreibung |
|---|---|
0x0001 |
READ_ONLY |
0x0002 |
SCROLL_LOCKS (vormals bekannt als LOCKCC) |
0x0004 |
OPTIMISTISCH (früher als OPTCC bezeichnet) |
0x0008 |
OPTIMISTIC (vormals bekannt als OPTCCVAL) |
0x2000 |
ALLOW_DIRECT |
0x4000 |
UPDT_IN_PLACE |
0x8000 |
CHECK_ACCEPTED_OPTS |
0x10000 |
READ_ONLY_ACCEPTABLE |
0x20000 |
SCROLL_LOCKS_ACCEPTABLE |
0x40000 |
OPTIMISTIC_ACCEPTABLE |
0x80000 |
OPTIMISITC_ACCEPTABLE |
Wie bei scrollopt kann SQL Server einen anderen Wert als die angeforderte zuweisen.
Rowcount
Ein optionaler Parameter, der die Anzahl der Abrufpufferzeilen angibt, die für die Verwendung verwendet AUTO_FETCHwerden sollen. Der Standardwert ist 20 Zeilen. Der Rowcount-Parameter verhält sich anders, wenn er als Eingabewert oder rückgabewert zugewiesen wird.
| Als Eingabewert | Als Rückgabewert |
|---|---|
| Wenn AUTO_FETCH mit FAST_FORWARD Cursorzeilenanzahl angegeben wird, stellt die Anzahl der Zeilen dar, die in den Abrufpuffer eingefügt werden sollen. | Stellt die Anzahl der Zeilen im Resultset dar. Wenn der Scrollopt-WertAUTO_FETCH angegeben wird, gibt rowcount die Anzahl der Zeilen zurück, die in den Abrufpuffer abgerufen wurden. |
parameter_name
Legt einen oder mehrere Parameternamen fest, wie im Parameter "params " definiert. Für jeden Parameter, der in Params enthalten ist, muss ein Parameter angegeben werden. Dieser Parameter ist nicht erforderlich, wenn die Transact-SQL-Anweisung oder der Batch in Params keine Parameter definiert hat.
Rückgabecodewerte
Wenn der Paramswert zurückgegeben wird NULL, wird die Anweisung nicht parametrisiert.
Beispiele
In diesem Beispiel wird die Verwendung von sp_cursorprepexec. Es wird eine Abfrage für die Tabelle in der Person Datenbank ausgeführt, die AdventureWorks2025 alle Datensätze zurückgibt, bei denen der Vorname "Kirby" lautet.
USE AdventureWorks2022;
GO
DECLARE @prep_handle INT,
@cursor INT,
@scrollopt INT = 4104,
@ccopt INT = 8193,
@rowcnt INT;
EXECUTE sp_cursorprepexec
@prep_handle OUTPUT,
@cursor OUTPUT,
N'@fName nvarchar(100)',
N'SELECT FirstName, LastName FROM Person.Person WHERE FirstName = @fName',
@scrollopt,
@ccopt,
@rowcnt OUTPUT,
'Kirby';
EXECUTE sp_cursorfetch @cursor;