Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
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.
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 der Ausnahme, dass der sp_cursoropen
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-WertPARAMETERIZED_STMT
lautet ON
, ist das Format der Zeichenfolge in der folgenden Form:
<parameter_name> <data_type> [ ,... n ]