sp_cursorprepare (Transact-SQL)
Gilt für: SQL Server
Kompiliert die Cursoranweisung oder den Batch in einen Ausführungsplan, erstellt jedoch keinen Cursor. Die kompilierte Anweisung kann später von sp_cursorexecute verwendet werden. Dieses Verfahren, gekoppelt mit sp_cursorexecute, hat dieselbe Funktion wie sp_cursoropen, ist aber in zwei Phasen unterteilt. sp_cursorprepare wird aufgerufen, indem id = 3 in einem TDS-Paket (Tabellarischer Datenstrom) angegeben wird.
Transact-SQL-Syntaxkonventionen
Syntax
sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
[ , scrollopt [ , ccopt ] ]
[ ; ]
Argumente
prepared_handle
Ein vom SQL Server generierter, vorbereiteter Handlebezeichner , der einen ganzzahligen Wert zurückgibt.
Hinweis
prepared_handle wird anschließend an eine sp_cursorexecute Prozedur übergeben, um einen Cursor zu öffnen. Nach der Erstellung bleibt ein Handle so lange bestehen, bis Sie sich abmelden oder es über die sp_cursorunprepare-Prozedur explizit 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 NULL-Wert ein, wenn die Anweisung nicht parametrisiert ist.
Hinweis
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 erfordert einen der Eingabewerte ntext, nchar oder nvarchar .
Hinweis
Die Regeln für die Angabe des Stmt-Werts sind mit denen für sp_cursoropen identisch, mit der Ausnahme, dass der Stmt-Zeichenfolgendatentyp ntext sein muss.
Optionen
Ein optionaler Parameter, der eine Beschreibung der Spalten im Cursorresultset zurückgibt. "options " erfordert den folgenden Int-Eingabewert .
Wert | Beschreibung |
---|---|
0x0001 | RETURN_METADATA |
scrollopt
Bildlaufoption. 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 |
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 (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 beim Scrollen kann SQL Server einen anderen Wert als die angeforderte zuweisen.
Hinweise
Der RPC-Statusparameter entspricht einem der folgenden Werte:
Wert | Beschreibung |
---|---|
0 | Erfolgreich |
0x0001 | Fehler |
1FF6 | Es konnten keine Metadaten zurückgegeben werden. Hinweis: Der Grund dafür ist, dass die Anweisung kein Resultset erzeugt; Beispielsweise handelt es sich um eine INSERT- oder DDL-Anweisung. |
Beispiele
Im Folgenden sehen Sie ein Beispiel für die Verwendung von 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-PARAMETERIZED_STMT Wert EIN ist, lautet das Format der Zeichenfolge wie folgt:
{ <lokaler Variablenname>**<Datentyp> } [ ,...n ]
Weitere Informationen
sp_cursorexecute (Transact-SQL)
sp_cursoropen (Transact-SQL)
sp_cursorunprepare (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für