sp_cursorprepare (Transact-SQL)
Gilt für: SQL Server
Kompiliert die Cursor-Anweisung oder den Batch in einen Ausführungsplan, erstellt jedoch nicht den Cursor. Die kompilierte Anweisung kann später von sp_cursorexecute
. Dieses Verfahren, gekoppelt mit sp_cursorexecute
, hat die gleiche Funktion wie sp_cursoropen
, aber wird in zwei Phasen aufgeteilt. sp_cursorprepare
wird aufgerufen, indem in einem TDS-Paket (Tabular Data Stream) angegeben ID = 3
wird.
Transact-SQL-Syntaxkonventionen
Syntax
sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
[ , scrollopt [ , ccopt ] ]
[ ; ]
Argumente
prepared_handle
Ein sql Server-generierter vorbereiteter handle
Bezeichner, der einen Int-Wert zurückgibt.
prepared_handle wird dann an eine sp_cursorexecute
Prozedur übergeben, um einen Cursor zu öffnen. Sobald ein Handle erstellt wurde, ist es vorhanden, bis Sie sich abmelden oder bis Sie es explizit über eine sp_cursorunprepare
Prozedur entfernen.
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. Geben Sie einen Wert ein NULL
, wenn die Anweisung nicht parametrisiert ist.
Verwenden Sie eine ntext-Zeichenfolge als Eingabewert, wenn stmt parametrisiert wird und der Scrollopt-PARAMETERIZED_STMT Wert EIN ist.
stmt
Definiert das Resultset des Cursors. Der stmt-Parameter ist erforderlich und ruft einen ntext-, **nchar- oder nvarchar-Eingabewert auf.
Die Regeln zum Angeben des Stmt-Werts sind identisch mit sp_cursoropen
der Ausnahme, dass der Datentyp stmt-Zeichenfolge ntext sein muss.
Optionen
Gibt eine Beschreibung der Cursorergebnissatzspalten zurück. Der Optionsparameter ist int mit einem Standardwert von NULL
. Bei Festlegung auf 0x0001
, bedeutet RETURN_METADATA
dies .
scrollopt
Option für den Bildlauf. Der Scrollopt-Parameter 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 |
Da der angeforderte Wert möglicherweise nicht für den durch stmt definierten Cursor geeignet ist, dient dieser Parameter sowohl als Eingabe als auch als Ausgabe. In solchen Fällen weist SQL Server einen passenden Wert zu.
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 (früher bekannt als LOCKCC ) |
0x0004 |
OPTIMISTIC (früher bekannt als OPTCC ) |
0x0008 |
OPTIMISTIC (früher 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 |
OPTIMISTIC_ACCEPTABLE |
Wie beim Scrollen kann SQL Server einen anderen Wert als die angeforderte zuweisen.
Hinweise
Der RPC-Statusparameter ist einer der folgenden Werte:
Wert | Beschreibung |
---|---|
0 |
Erfolg |
0x0001 |
Fehler |
1FF6 |
Metadaten konnten nicht zurückgegeben werden. Hinweis: Der Grund dafür ist, dass die Anweisung kein Resultset erzeugt, z. B. eine DDL-Anweisung oder eine INSERT DDL-Anweisung. |
Beispiele
Der folgende Code ist ein Beispiel für die Verwendung sp_cursorprepare
und sp_cursorexecute
:
DECLARE @handle INT, @p5 INT, @p6 INT;
EXEC sp_cursorprepare @handle OUTPUT,
N'@dbid int',
N'select * from sys.databases where database_id < @dbid',
1,
@p5 OUTPUT,
@p6 OUTPUT;
DECLARE @p1 INT
SET @P1 = @handle;
DECLARE @p2 INT;
DECLARE @p3 INT;
DECLARE @p4 INT;
SET @P6 = 4;
EXEC sp_cursorexecute @p1,
@p2 OUTPUT,
@p3 OUTPUT,
@p4 OUTPUT,
@p5 OUTPUT,
@p6;
EXEC sp_cursorfetch @P2;
EXEC sp_cursorunprepare @handle;
EXEC sp_cursorclose @p2;
Wenn stmt parametrisiert wird und der Scrollopt-Wert PARAMETERIZED_STMT
lautet ON
, ist das Format der Zeichenfolge in der folgenden Form:
<parameter_name> <data_type> [ ,... n ]