Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Kompilerar markörens instruktion eller batch till en körningsplan, men skapar inte markören. Den kompilerade instruktionen kan senare användas av sp_cursorexecute
. Den här proceduren, tillsammans med sp_cursorexecute
, har samma funktion som sp_cursoropen
, men är uppdelad i två faser.
sp_cursorprepare
anropas genom att ange ID = 3
i ett TDS-paket (Tabular Data Stream).
Transact-SQL syntaxkonventioner
Syntax
sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
[ , scrollopt [ , ccopt ] ]
[ ; ]
Argument
Viktig
Argument för utökade lagrade procedurer måste anges i den specifika ordning som beskrivs i avsnittet Syntax. Om parametrarna anges i fel ordning visas ett felmeddelande.
prepared_handle
En SQL Server-genererad förberedd handle
identifierare som returnerar ett int- värde.
prepared_handle skickas sedan till en sp_cursorexecute
procedur för att öppna en markör. När ett handtag har skapats finns det tills du loggar ut, eller tills du uttryckligen tar bort det via en sp_cursorunprepare
procedur.
params
Identifierar parametriserade instruktioner.
params definition av variabler ersätts med parametermarkörer i -instruktionen.
params är en obligatorisk parameter som anropar ett ntext, nchareller nvarchar indatavärde. Ange ett NULL
värde om instruktionen inte är parameteriserad.
Använd en ntext- sträng som indatavärde när stmt parametriseras och scrollopt- PARAMETERIZED_STMT värdet är PÅ.
stmt
Definierar markörens resultatuppsättning. Parametern stmt krävs och anropar ett ntext-, **nchar eller nvarchar indatavärde.
Reglerna för att ange värdet stmt är samma som sp_cursoropen
, med undantag för att stmt strängdatatyp måste vara ntext.
alternativ
Returnerar en beskrivning av kolumnerna för markörresultatuppsättningen. De alternativen parametern är int, med standardvärdet NULL
. När värdet är inställt på 0x0001
innebär det RETURN_METADATA
.
scrollopt
Rullningsalternativ. Parametern scrollopt är en valfri parameter som kräver något av följande int indatavärden.
Värde | Beskrivning |
---|---|
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 |
Eftersom det begärda värdet kanske inte är lämpligt för markören som definieras av stmtfungerar den här parametern både som indata och utdata. I sådana fall tilldelar SQL Server ett lämpligt värde.
ccopt
Alternativ för samtidighetskontroll. ccopt är en valfri parameter som kräver något av följande int indatavärden.
Värde | Beskrivning |
---|---|
0x0001 |
READ_ONLY |
0x0002 |
SCROLL_LOCKS (tidigare känt som LOCKCC ) |
0x0004 |
OPTIMISTIC (tidigare känt som OPTCC ) |
0x0008 |
OPTIMISTIC (tidigare känt som 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 |
Precis som med scrollptkan SQL Server tilldela ett annat värde än det som begärdes.
Anmärkningar
RPC-statusparametern är ett av följande värden:
Värde | Beskrivning |
---|---|
0 |
Framgång |
0x0001 |
Misslyckande |
1FF6 |
Det gick inte att returnera metadata. Obs! Orsaken till detta är att -instruktionen inte ger någon resultatuppsättning. Det är till exempel en INSERT - eller DDL-instruktion. |
Exempel
Följande kod är ett exempel på hur du använder sp_cursorprepare
och 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;
När stmt parametriseras och värdet scrolloptPARAMETERIZED_STMT
är ON
, är strängformatet i följande formulär:
<parameter_name> <data_type> [ ,... n ]