Freigeben über


sp_cursorprepexec (Transact-SQL)

Gilt für:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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;