sp_cursorprepexec (Transact-SQL)

Gilt für:SQL ServerAzure SQL DatabaseAzure Synapse AnalyticsAnalytics Platform System (PDW)

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

vorbereiteter Handle

Ein VON SQL Server generierter Handlebezeichner . Vorbereiteter Handle ist erforderlich und gibt int zurück.

Cursor

Der sql Server generierte Cursorbezeichner . Cursor ist ein erforderlicher Parameter, der für alle nachfolgenden Prozeduren bereitgestellt werden muss, die auf diesen Cursor reagieren, sp_cursorfetchz. B. .

params

Identifiziert parametrisierte Anweisungen. Die params -Definition der Variablen wird in der Anweisung an die Stelle der Parametermarkierungen gesetzt. params ist ein erforderlicher Parameter, der einen Eingabewert vom Typ ntext, nchar,oder nvarchar erfordert.

Hinweis

Verwenden Sie eine ntext-Zeichenfolge als Eingabewert, wenn die Anweisung parametrisiert wird, und der Scrollopt-PARAMETERIZED_STMT Wert ist EIN.

statement

Definiert das Resultset des Cursors. Der Anweisungsparameter ist erforderlich und ruft einen ntext-, nchar- oder nvarchar-Eingabewert auf.

Hinweis

Die Regeln für die Angabe des Anweisungswerts sind identisch mit denen für sp_cursoropen, mit der Ausnahme, dass der Datentyp der Anweisungszeichenfolge ntext sein muss.

Optionen

Ein optionaler Parameter, der eine Beschreibung der Spalten im Cursorresultset zurückgibt. für Optionen ist der folgende Int-Eingabewert erforderlich.

Wert Beschreibung
0x0001 RETURN_METADATA

scrollopt

Option für den Bildlauf. scrollopt ist ein optionaler Parameter, der einen der folgenden Int-Eingabewerte erfordert.

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. ccopt ist ein optionaler Parameter, der einen der folgenden Int-Eingabewerte erfordert.

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 mit AUTO_FETCH verwendet werden sollen. Der Standardwert ist 20 Zeilen. Rowcount verhält sich anders, wenn ein Eingabewert als Eingabewert oder ein 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-AUTO_FETCH Wert angegeben ist, gibt der Zeilenanzahlwert die Anzahl der Zeilen zurück, die im Abrufpuffer abgerufen wurden.

parameter_name

Legt einen oder mehrere Parameternamen fest, die im Params-Argument definiert sind. Für jeden Parameter, der in Params enthalten ist, muss ein Parameter angegeben werden. Dieses Argument ist nicht erforderlich, wenn die Transact-SQL-Anweisung oder der Batch in Params keine Parameter definiert hat.

Rückgabecodewerte

Wenn Params einen NULL-Wert zurückgibt, 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 AdventureWorks2022 alle Datensätze zurückgibt, bei denen der Vorname "Katherine" lautet.

USE AdventureWorks2022;
GO

DECLARE @prep_handle INT,
    @cursor INT,
    @scrollopt INT = 4104,
    @ccopt INT = 8193,
    @rowcnt INT;

EXEC 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,
    'Katherine';

EXEC sp_cursorfetch @cursor;