Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
databáze SQL v Microsoft Fabric
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. Parametr připraveného popisovače je povinný a vrátí hodnotu int.
kurzoru
Sql Server vygeneroval identifikátor kurzoru. Parametr kurzoru je povinný parametr, který musí být zadán pro všechny následné procedury, které se chovají na tomto kurzoru, sp_cursorfetchnapříklad .
params
Identifikuje parametrizované příkazy. parametry definice proměnných se v příkazu nahradí značkami parametrů. Parametr parametru je povinný. Při zadání volá parametry hodnotu vstupu ntext, nchar nebo nvarchar .
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í hodnoty příkazu jsou stejná jako sp_cursoropen, s výjimkou, že datový typ řetězce příkazu musí být ntext.
možnosti
Volitelný parametr, který vrátí popis sloupců sady výsledků kurzoru. Parametr možností vyžaduje následující vstupní hodnotu int .
| Hodnota | Popis |
|---|---|
0x0001 |
RETURN_METADATA |
scrollopt
Možnost posouvání Parametr scrollopt je volitelný. Při zadání vyžaduje scrollopt jednu z následujících 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 Parametr ccopt je volitelný. Při zadání parametr ccopt vyžaduje jednu z následujících 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ů. Parametr rowcount 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 scrolloptAUTO_FETCH , 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 parametru parametrů . Musí existovat parametr zadaný pro každý parametr zahrnutý v params. Tento parametr není vyžadován, pokud příkaz Transact-SQL nebo dávka v parametrech nemají definované žádné parametry.
Návratové hodnoty kódu
Pokud se hodnota parametru vrátí NULL, příkaz není parametrizován.
Příklady
Tento příklad ukazuje použití sp_cursorprepexec. Spustí dotaz na Person tabulku v AdventureWorks2025 databázi, která vrátí všechny záznamy, kde jméno je Kirby.
USE AdventureWorks2022;
GO
DECLARE @prep_handle INT,
@cursor INT,
@scrollopt INT = 4104,
@ccopt INT = 8193,
@rowcnt INT;
EXECUTE 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,
'Kirby';
EXECUTE 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)