Delen via


sp_cursorprepexec (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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;