sp_cursorprepare (Transact-SQL)
van toepassing op:SQL Server-
Compileert de cursorinstructie of batch in een uitvoeringsplan, maar maakt de cursor niet. De gecompileerde instructie kan later worden gebruikt door sp_cursorexecute
. Deze procedure, gekoppeld aan sp_cursorexecute
, heeft dezelfde functie als sp_cursoropen
, maar wordt gesplitst in twee fasen.
sp_cursorprepare
wordt aangeroepen door ID = 3
op te geven in een TDS-pakket (tabellaire gegevensstroom).
Transact-SQL syntaxisconventies
Syntaxis
sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
[ , scrollopt [ , ccopt ] ]
[ ; ]
Argumenten
Belangrijk
Argumenten voor uitgebreide opgeslagen procedures moeten worden ingevoerd in de specifieke volgorde, zoals beschreven in de sectie Syntaxis. Als de parameters niet in de volgorde zijn ingevoerd, treedt er een foutbericht op.
prepared_handle
Een door SQL Server gegenereerde handle
-id die een int--waarde retourneert.
prepared_handle wordt vervolgens aan een sp_cursorexecute
procedure geleverd om een cursor te openen. Zodra een ingang is gemaakt, bestaat deze totdat u zich afmeldt of totdat u deze expliciet verwijdert via een sp_cursorunprepare
procedure.
params
Identificeert geparameteriseerde instructies. De parameters definitie van variabelen wordt vervangen door parametermarkeringen in de instructie.
params is een vereiste parameter die een ntext, ncharof nvarchar invoerwaarde aanroept. Voer een NULL
waarde in als de instructie niet is geparameteriseerd.
Gebruik een ntext tekenreeks als invoerwaarde wanneer stmt- wordt geparameteriseerd en de scrollopt PARAMETERIZED_STMT waarde is INGESCHAKELD.
stmt-
Hiermee definieert u de resultatenset van de cursor. De parameter stmt is vereist en roept een ntext-, **nchar of nvarchar invoerwaarde aan.
De regels voor het opgeven van de stmt--waarde zijn hetzelfde als sp_cursoropen
, met uitzondering dat het gegevenstype stmt tekenreeks moet worden ntext.
opties
Retourneert een beschrijving van de kolommen van de cursorresultatenset. De -opties parameter is int, met een standaardwaarde van NULL
. Als deze is ingesteld op 0x0001
, betekent dit RETURN_METADATA
.
Schuifoptie. De parameter scrollopt is een optionele parameter waarvoor een van de volgende invoerwaarden is vereist.
Waarde | Beschrijving |
---|---|
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 |
Omdat de aangevraagde waarde mogelijk niet geschikt is voor de cursor die is gedefinieerd door stmt-, dient deze parameter als invoer en uitvoer. In dergelijke gevallen wijst SQL Server een geschikte waarde toe.
Optie voor gelijktijdigheidsbeheer. is een optionele parameter waarvoor een van de volgende invoerwaarden is vereist.
Waarde | Beschrijving |
---|---|
0x0001 |
READ_ONLY |
0x0002 |
SCROLL_LOCKS (voorheen bekend als LOCKCC ) |
0x0004 |
OPTIMISTIC (voorheen bekend als OPTCC ) |
0x0008 |
OPTIMISTIC (voorheen bekend 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 |
Net als bij scrollpt, kan SQL Server een andere waarde toewijzen dan de waarde die is aangevraagd.
Opmerkingen
De RPC-statusparameter is een van de volgende waarden:
Waarde | Beschrijving |
---|---|
0 |
Succes |
0x0001 |
Mislukking |
1FF6 |
Kan geen metagegevens retourneren. Opmerking: De reden hiervoor is dat de instructie geen resultatenset produceert; Het is bijvoorbeeld een INSERT - of DDL-instructie. |
Voorbeelden
De volgende code is een voorbeeld van het gebruik van sp_cursorprepare
en 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;
Wanneer stmt- wordt geparameteriseerd en de scrollopt-PARAMETERIZED_STMT
-waarde wordt ON
, heeft de notatie van de tekenreeks de volgende vorm:
<parameter_name> <data_type> [ ,... n ]