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 in Verbindung mit sp_cursorexecute hat dieselbe Funktion wie sp_cursoropen, ist aber in zwei Phasen unterteilt. sp_cursorprepare wird durch Angabe der ID = 3 in einem TDS-Paket (Tabular Data Stream) aufgerufen.
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 ganzzahligen Wert zurückgibt.
Hinweis
prepared_handle wird anschließend an eine sp_cursorexecute Prozedur übermittelt, 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 ist und der scrollopt PARAMETERIZED_STMT Wert ON ist.
Stmt
Definiert das Resultset des Cursors. Der stmt -Parameter ist erforderlich und erfordert einen der Eingabewerte ntext, nchar oder nvarchar .
Hinweis
Die Regeln zum Angeben des stmt-Werts sind identisch mit denen für sp_cursoropen, mit der Ausnahme, dass der Stmt-Zeichenfolgendatentyp ntext sein muss.
options
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
Scroll-Option. 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.
ccopt
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 | OPTIMISTIC (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 können SQL Server einen anderen Wert als den angeforderten zuweisen.
Bemerkungen
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 finden 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 ist und der scrollopt PARAMETERIZED_STMT Wert ON ist, lautet das Format der Zeichenfolge wie folgt:
{ <Name> der lokalen Variablen**<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