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
Azure SQL Database
Azure Synapse Analytics
Analytics Platform System (PDW)
Kompilerar en plan för den skickade markörsatsen eller batchen och skapar och fyller sedan markören.
sp_cursorprepexec
kombinerar funktionerna i sp_cursorprepare
och sp_cursorexecute
. Den här proceduren anropas genom att ange ID = 5
i ett TDS-paket (Tabular Data Stream).
Transact-SQL syntaxkonventioner
Syntax
sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
[ , scrollopt [ , ccopt [ , rowcount ] ] ]
[ , '@parameter_name [ , ...n ]' ]
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.
förberett handtag
En SQL Server-genererad förberedd handtag identifierare. förberedd handtag krävs och returnerar int.
markören
DEN SQL Server-genererade markören identifierare.
markören är en obligatorisk parameter som måste anges för alla efterföljande procedurer som agerar på markören, till exempel sp_cursorfetch
.
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.
Not
Använd en ntext- sträng som indatavärde när -instruktionen parametriseras och scrollopt- PARAMETERIZED_STMT värdet är PÅ.
-instruktion
Definierar markörens resultatuppsättning. Parametern -instruktionen krävs och anropar ett ntext-, nchareller nvarchar indatavärde.
Not
Reglerna för att ange -instruktionen värdet är samma som för sp_cursoropen
, med undantag för att -instruktionen strängdatatyp måste vara ntext.
alternativ
En valfri parameter som returnerar en beskrivning av kolumnerna i markörresultatuppsättningen. alternativ kräva följande int indatavärde.
Värde | Beskrivning |
---|---|
0x0001 |
RETURN_METADATA |
scrollopt
Rullningsalternativ. scrollopt är en valfri parameter som kräver något av följande int indatavärden.
Värde | Beskrivning |
---|---|
0x0001 |
NYCKELUPPSÄTTNING |
0x0002 |
DYNAMISK |
0x0004 |
FORWARD_ONLY |
0x0008 |
STATISK |
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 |
På grund av möjligheten att det begärda alternativet inte är lämpligt för markören som definieras av -instruktionenfungerar den här parametern både som indata och utdata. I sådana fall tilldelar SQL Server en lämplig typ och ändrar det här värdet.
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 kallat OPTCC) |
0x0008 |
OPTIMISTIC (tidigare kallat 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 |
Precis som med scrolloptkan SQL Server tilldela ett annat värde än det som begärdes.
rowcount
En valfri parameter som anger antalet hämtningsbuffertrader som ska användas med AUTO_FETCH. Standardvärdet är 20 rader. rowcount fungerar annorlunda när det tilldelas som ett indatavärde jämfört med ett returvärde.
Som indatavärde | Som returvärde |
---|---|
När AUTO_FETCH anges med FAST_FORWARD markörer radantalet representerar antalet rader som ska placeras i hämtningsbufferten. | Representerar antalet rader i resultatuppsättningen. När värdet scrollopt AUTO_FETCH anges returnerar rowcount antalet rader som hämtades till hämtningsbufferten. |
parameter_name
Anger ett eller flera parameternamn enligt definitionen i argumentet params. Det måste finnas en parameter som anges för varje parameter som ingår i params. Det här argumentet krävs inte när Transact-SQL-instruktionen eller batchen i params inte har några definierade parametrar.
Returnera kodvärden
Om params returnerar ett NULL
värde parametriseras inte -instruktionen.
Exempel
Det här exemplet visar användningen av sp_cursorprepexec
. Den kör en fråga mot tabellen Person
i AdventureWorks2022
-databasen och returnerar alla poster där förnamnet är "Katherine".
USE AdventureWorks2022;
GO
DECLARE @prep_handle INT,
@cursor INT,
@scrollopt INT = 4104,
@ccopt INT = 8193,
@rowcnt INT;
EXEC sp_cursorprepexec
@prep_handle OUTPUT,
@cursor OUTPUT,
N'@fName nvarchar(100)',
N'SELECT FirstName, LastName FROM Person.Person WHERE FirstName = @fName',
@scrollopt,
@ccopt,
@rowcnt OUTPUT,
'Katherine';
EXEC sp_cursorfetch @cursor;