Delen via


sp_cursorprepexec (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure Synapse AnalyticsAnalytics Platform System (PDW)

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. voorbereide ingang is vereist en retourneert int.

cursor

De door SQL Server gegenereerde cursor id. cursor 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. params is een vereiste parameter die een ntext, ncharof nvarchar invoerwaarde aanroept.

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 instructie waarde zijn hetzelfde als die voor sp_cursoropen, met uitzondering dat de instructie tekenreeksgegevenstype moet worden ntext.

opties

Een optionele parameter die een beschrijving van de kolommen van de cursorresultatenset retourneert. opties de volgende int invoerwaarde vereisen.

Waarde Beschrijving
0x0001 RETURN_METADATA

Schuifoptie. scrollopt- is een optionele parameter waarvoor een van de volgende invoerwaarden is 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. is een optionele parameter waarvoor een van de volgende invoerwaarden is 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 die het aantal ophaalbufferrijen aangeeft dat moet worden gebruikt met AUTO_FETCH. De standaardwaarde is 20 rijen. rowcount zich anders gedraagt 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 AUTO_FETCH waarde is opgegeven, geeft rijaantal het aantal rijen dat in de ophaalbuffer is opgehaald, als resultaat.

parameter_name

Wijst een of meer parameternamen aan zoals gedefinieerd in het argument parameters. Er moet een parameter worden opgegeven voor elke parameter die is opgenomen in params. Dit argument is niet vereist wanneer de Transact-SQL instructie of batch in params geen parameters heeft gedefinieerd.

Codewaarden retourneren

Als parameters een NULL waarde retourneert, 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 voornaam 'Katherine' is.

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;