sp_cursorprepexec (Transact-SQL)
platí pro:SQL Server
Azure SQL Database
Azure Synapse Analytics
Analytics Platform System (PDW)
Zkompiluje plán odeslaného příkazu kurzoru nebo dávky a pak vytvoří a naplní kurzor.
sp_cursorprepexec
kombinuje funkce sp_cursorprepare
a sp_cursorexecute
. Tento postup se vyvolá zadáním ID = 5
v paketu TDS (Tabular Data Stream).
Syntax
sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
[ , scrollopt [ , ccopt [ , rowcount ] ] ]
[ , '@parameter_name [ , ...n ]' ]
Argumenty
Důležitý
Argumenty rozšířených uložených procedur musí být zadány v určitém pořadí, jak je popsáno v části Syntaxe. Pokud jsou parametry zadány mimo pořadí, dojde k chybové zprávě.
připravený popisovač
SQL Server vygeneroval připravený popisovač identifikátoru. připravený popisovač je povinný a vrátí .
kurzoru
Sql Server vygeneroval identifikátor kurzoru.
kurzor je povinný parametr, který musí být zadán pro všechny následné postupy, které na tomto kurzoru působí, například sp_cursorfetch
.
params
Identifikuje parametrizované příkazy. parametry definice proměnných se v příkazu nahradí značkami parametrů. parametr je povinný parametr, který volá ntext, ncharnebo nvarchar vstupní hodnotu.
Poznámka
Pokud je příkaz parametrizován a hodnota scrollopt PARAMETERIZED_STMT je zapnutá, použijte jako vstupní hodnotu řetězec ntext.
příkazu
Definuje sadu výsledků kurzoru. Parametr příkazu je povinný a volá ntext, ncharnebo nvarchar vstupní hodnotu.
Poznámka
Pravidla pro zadání příkazu jsou stejná jako pro sp_cursoropen
, s výjimkou, že příkaz řetězcový datový typ musí být ntext.
možnosti
Volitelný parametr, který vrátí popis sloupců sady výsledků kurzoru. možnosti vyžadují následující vstupní hodnotu.
Hodnota | Popis |
---|---|
0x0001 |
RETURN_METADATA |
scrollopt
Možnost posouvání scrollopt je volitelný parametr, který vyžaduje jeden z následujících int vstupních hodnot.
Hodnota | Popis |
---|---|
0x0001 |
SADA KLÍČŮ |
0x0002 |
DYNAMICKÝ |
0x0004 |
FORWARD_ONLY |
0x0008 |
STATICKÝ |
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 |
Vzhledem k možnosti, že požadovaná možnost není vhodná pro kurzor definovaný příkazem, tento parametr slouží jako vstup i výstup. V takových případech SQL Server přiřadí odpovídající typ a upraví tuto hodnotu.
Možnost řízení souběžnosti je volitelný parametr, který vyžaduje jednu z následujících int vstupních hodnot.
Hodnota | Popis |
---|---|
0x0001 |
READ_ONLY |
0x0002 |
SCROLL_LOCKS (dříve označované jako LOCKCC) |
0x0004 |
OPTIMISTIC (dříve označovaný jako OPTCC) |
0x0008 |
OPTIMISTIC (dříve označovaný jako 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 |
Stejně jako u scrolloptmůže SQL Server přiřadit jinou hodnotu než požadovanou hodnotu.
počtu řádků
Volitelný parametr, který označuje počet řádků vyrovnávací paměti, které se mají použít s AUTO_FETCH. Výchozí hodnota je 20 řádků. počet řádků se při přiřazení jako vstupní hodnota a návratové hodnoty chová odlišně.
Jako vstupní hodnota | Jako návratová hodnota |
---|---|
Pokud AUTO_FETCH zadáte kurzory FAST_FORWARD počet řádků představuje počet řádků, které se mají umístit do vyrovnávací paměti pro načtení. | Představuje počet řádků v sadě výsledků. Pokud je zadána hodnota scrollopt AUTO_FETCH, počet řádků vrátí počet řádků, které byly načteny do vyrovnávací paměti pro načtení. |
parameter_name
Určuje jeden nebo více názvů parametrů definovaných v parametrech argumentu. Musí existovat parametr zadaný pro každý parametr zahrnutý v params. Tento argument není vyžadován, pokud příkaz Transact-SQL nebo dávka v params nemá definované žádné parametry.
Návratové hodnoty kódu
Pokud parametry vrátí hodnotu NULL
, příkaz není parametrizován.
Příklady
Tento příklad ukazuje použití sp_cursorprepexec
. Spustí dotaz na tabulku Person
v databázi AdventureWorks2022
, která vrátí všechny záznamy, kde je jméno 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;
Související obsah
- sp_cursoropen (Transact-SQL)
- sp_cursorexecute (Transact-SQL)
- sp_cursorprepare (Transact-SQL)
- sp_cursorfetch (Transact-SQL)
- uložené procedury systému (Transact-SQL)