Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-database in Microsoft Fabric Preview
Compileert een plan voor de ingediende cursorinstructie of batch en maakt en vult de cursor.
sp_cursorprepexec combineert de functies van sp_cursorprepare en sp_cursorexecute. Deze procedure wordt aangeroepen door ID = 5 op te geven in een TDS-pakket (tabellaire gegevensstroom).
Transact-SQL syntaxisconventies
Syntaxis
sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
[ , scrollopt [ , ccopt [ , rowcount ] ] ]
[ , '@parameter_name [ , ...n ]' ]
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.
voorbereide ingang
Een door SQL Server gegenereerde voorbereide ingang id. De parameter voorbereide ingang is vereist en retourneert int.
cursor
De door SQL Server gegenereerde cursor id. De cursorparameter is een vereiste parameter die moet worden opgegeven voor alle volgende procedures die op deze cursor reageren, bijvoorbeeld sp_cursorfetch.
params
Identificeert geparameteriseerde instructies. De parameters definitie van variabelen wordt vervangen door parametermarkeringen in de instructie. De parameter params is vereist. Indien opgegeven, worden parameters aanroepen voor een ntext-, nchar- of nvarchar-invoerwaarde .
Notitie
Gebruik een ntext tekenreeks als invoerwaarde wanneer instructie wordt geparameteriseerd en de scrollopt PARAMETERIZED_STMT waarde is INGESCHAKELD.
instructie
Hiermee definieert u de resultatenset van de cursor. De instructie parameter is vereist en roept een ntext, ncharof nvarchar invoerwaarde aan.
Notitie
De regels voor het opgeven van de instructiewaarde zijn hetzelfde als sp_cursoropen, met uitzondering dat het gegevenstype van de instructietekenreeksntext moet zijn.
opties
Een optionele parameter die een beschrijving van de kolommen van de cursorresultatenset retourneert. Voor de parameter Opties is de volgende int-invoerwaarde vereist.
| Waarde | Beschrijving |
|---|---|
0x0001 |
RETURN_METADATA |
Schuifoptie. De parameter scrollopt is optioneel. Wanneer u dit hebt opgegeven, is voor scrollopt een van de volgende invoerwaarden vereist.
| Waarde | Beschrijving |
|---|---|
0x0001 |
KEYSET |
0x0002 |
DYNAMISCH |
0x0004 |
FORWARD_ONLY |
0x0008 |
STATISCH |
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 |
Vanwege de mogelijkheid dat de aangevraagde optie niet geschikt is voor de cursor die is gedefinieerd door instructie, dient deze parameter als invoer en uitvoer. In dergelijke gevallen wijst SQL Server een geschikt type toe en wijzigt deze waarde.
Optie voor gelijktijdigheidsbeheer. De parameter ccopt is optioneel. Wanneer deze parameter is opgegeven, is een van de volgende invoerwaarden vereist.
| Waarde | Beschrijving |
|---|---|
0x0001 |
READ_ONLY |
0x0002 |
SCROLL_LOCKS (voorheen bekend als LOCKCC) |
0x0004 |
OPTIMISTISCH (voorheen OPTCC genoemd) |
0x0008 |
OPTIMISTISCH (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 |
OPTIMISITC_ACCEPTABLE |
Net als bij scrolloptkan SQL Server een andere waarde toewijzen dan de waarde die is aangevraagd.
aantal rijen
Een optionele parameter waarmee het aantal ophaalbufferrijen wordt aangegeven dat moet worden gebruikt met AUTO_FETCH. De standaardwaarde is 20 rijen. De parameter rowcount gedraagt zich anders wanneer deze is toegewezen als invoerwaarde versus een retourwaarde.
| Als invoerwaarde | Als retourwaarde |
|---|---|
| Wanneer AUTO_FETCH is opgegeven met FAST_FORWARD cursors rijaantal het aantal rijen aangeeft dat in de ophaalbuffer moet worden geplaatst. | Vertegenwoordigt het aantal rijen in de resultatenset. Wanneer de scrollopt-waardeAUTO_FETCH is opgegeven, retourneert rowcount het aantal rijen dat is opgehaald in de ophaalbuffer. |
parameter_name
Hiermee wijst u een of meer parameternamen aan zoals gedefinieerd in de parameter params . Er moet een parameter worden opgegeven voor elke parameter die is opgenomen in params. Deze parameter is niet vereist wanneer de Transact-SQL instructie of batch in params geen parameters heeft gedefinieerd.
Codewaarden retourneren
Als de parameterwaarde retourneert NULL, wordt de instructie niet geparameteriseerd.
Voorbeelden
In dit voorbeeld ziet u het gebruik van sp_cursorprepexec. Er wordt een query uitgevoerd op de Person tabel in de AdventureWorks2022 database die alle records retourneert waarbij de voornaam Kirby is.
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;