Megosztás a következőn keresztül:


sp_cursorprepexec (Transact-SQL)

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

Összeállít egy tervet az elküldött kurzorutasításhoz vagy köteghez, majd létrehozza és feltölti a kurzort. sp_cursorprepexec egyesíti a sp_cursorprepare és a sp_cursorexecutefüggvényét. Ezt az eljárást úgy hívjuk meg, hogy ID = 5 egy táblázatos adatfolyam-csomagban (TDS- csomagban) adhatja meg.

Transact-SQL szintaxis konvenciói

Szintaxis

sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
    [ , scrollopt [ , ccopt [ , rowcount ] ] ]
    [ , '@parameter_name [ , ...n ]' ]

Érvek

Fontos

A kiterjesztett tárolt eljárások argumentumait a Szintaxis szakaszban leírt sorrendben kell megadni. Ha a paraméterek sorrenden kívül vannak beírva, hibaüzenet jelenik meg.

előkészített kezelő

Egy SQL Server által létrehozott előkészített leíró azonosító. Az előkészített leíróparaméter szükséges, és int értéket ad vissza.

kurzor

Az SQL Server kurzort azonosítót generált. A kurzorparaméter egy kötelező paraméter, amelyet meg kell adni a kurzort követő összes további eljáráshoz, például sp_cursorfetch.

params

Paraméteres utasításokat azonosít. A paraméterjelek változók definíciója a paraméterjelölők helyett szerepel az utasításban. A params paraméter megadása kötelező. Ha meg van adva, a paramokntext, nchar vagy nvarchar bemeneti értéket kérnek.

Jegyzet

ntext karakterláncot használjon bemeneti értékként, ha utasítás paraméteres, és a scrollopt PARAMETERIZED_STMT értéke BE van kapcsolva.

utasítás

Meghatározza a kurzor eredményhalmazát. A utasítás paraméterre van szükség, és ntext, ncharvagy nvarchar bemeneti értéket kér.

Jegyzet

Az utasítás értékének megadására szolgáló szabályok megegyeznek a sp_cursoropen, azzal a kivétellel, hogy az utasítás sztring adattípusának ntextnek kell lennie.

beállítások

Nem kötelező paraméter, amely a kurzor eredményhalmaz oszlopainak leírását adja vissza. A beállításparaméterhez a következő bemeneti bemeneti érték szükséges.

Érték Leírás
0x0001 RETURN_METADATA

scrollopt

Görgetési lehetőség. A scrollopt paraméter megadása nem kötelező. Ha meg van adva, a scrollopt a következő bemeneti értékek egyikét igényli.

Érték Leírás
0x0001 BILLENTYŰKÉSZLET
0x0002 DINAMIKUS
0x0004 FORWARD_ONLY
0x0008 STATIKUS
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

Mivel lehetséges, hogy a kért beállítás nem felel meg az utasításáltal meghatározott kurzornak, ez a paraméter bemenetként és kimenetként is szolgál. Ilyen esetekben az SQL Server hozzárendel egy megfelelő típust, és módosítja ezt az értéket.

ccopt

Egyidejűség-vezérlési lehetőség. A ccopt paraméter megadása nem kötelező. Ha meg van adva, a ccopt paraméterhez az alábbi bemeneti értékek egyikére van szükség.

Érték Leírás
0x0001 READ_ONLY
0x0002 SCROLL_LOCKS (korábbi nevén LOCKCC)
0x0004 OPTIMISTA (korábbi nevén OPTCC)
0x0008 OPTIMISTA (korábbi nevén 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

A scrolloptesetén is az SQL Server a kért értéktől eltérő értéket rendelhet hozzá.

sorszám

Nem kötelező paraméter, amely a lekérési puffersorok AUTO_FETCHszámát jelzi. Az alapértelmezett érték 20 sor. A sorszámlálási paraméter eltérően viselkedik, ha bemeneti értékként van hozzárendelve a visszatérési értékhez képest.

Bemeneti értékként Visszatérési értékként
Ha AUTO_FETCH FAST_FORWARD kurzorokkal van megadva, sorszám a beolvasási pufferbe helyezendő sorok számát jelöli. Az eredményhalmaz sorainak számát jelöli. A scrolloptAUTO_FETCH érték megadásakor a sorszám a beolvasási pufferbe beolvasott sorok számát adja vissza.

parameter_name

Egy vagy több paraméternevet jelöl ki a params paraméterben meghatározottak szerint . Az paramsminden paraméteréhez meg kell adni egy paramétert. Ez a paraméter nem szükséges, ha a paraméterben lévő Transact-SQL utasítás vagy köteg nem definiált paramétereket.

Kódértékek visszaadása

Ha a paramérték visszaadja NULL, az utasítás nincs paraméterezve.

Példák

Ez a példa a sp_cursorprepexechasználatát mutatja be. Lekérdezést futtat az Person adatbázisban lévő táblán, és visszaadja az AdventureWorks2025 összes rekordot, ahol a keresztnév "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;