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


CURSOR_STATUS (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Egy adott paraméter esetében azt jelzi, CURSOR_STATUS hogy egy kurzordeklaráció visszaadott-e kurzort és eredményhalmazt.

Transact-SQL szintaxis konvenciók

Szemantika

CURSOR_STATUS
     (
          { 'local' , 'cursor_name' }
          | { 'global' , 'cursor_name' }
          | { 'variable' , 'cursor_variable' }
     )

Érvek

"helyi"

Egy állandót ad meg, amely azt jelzi, hogy a kurzor forrása helyi kurzor.

"globális"

Egy állandót ad meg, amely azt jelzi, hogy a kurzor forrása globális kurzor.

"változó"

Egy állandót ad meg, amely azt jelzi, hogy a kurzor forrása egy helyi változó.

  • "cursor_variable"

    A kurzorváltozó neve. A kurzorváltozót a kurzor adattípusával kell definiálni.

Visszatérési típusok

kisméretű

Visszaadott érték Kurzor neve Kurzorváltozó
1 A kurzor eredményhalmazának legalább egy sora van.

Az érzéketlen és a billentyűkészlet-kurzorok esetében az eredményhalmaznak legalább egy sora van.

Dinamikus kurzorok esetén az eredményhalmaz nulla, egy vagy több sort tartalmazhat.
A változóhoz lefoglalt kurzor nyitva van.

Az érzéketlen és a billentyűkészlet-kurzorok esetében az eredményhalmaznak legalább egy sora van.

Dinamikus kurzorok esetén az eredményhalmaz nulla, egy vagy több sort tartalmazhat.
0 A kurzor eredményhalmaza üres. 1 A változóhoz lefoglalt kurzor nyitva van, de az eredményhalmaz határozottan üres.*
-1 A kurzor bezárult. A változóhoz lefoglalt kurzor bezárul.
-2 Nem alkalmazható. Az alábbi lehetőségek egyikével rendelkezik:

A korábban hívott eljárás nem rendelt hozzá kurzort ehhez a OUTPUT változóhoz.

A korábban hozzárendelt eljárás kurzort rendelt ehhez a OUTPUT változóhoz, de a kurzor zárt állapotban volt, amikor az eljárás befejeződött. Ezért a kurzor felszabadítva van, és nem tér vissza a hívási eljáráshoz.

A deklarált kurzorváltozóhoz nincs hozzárendelve kurzor.
-3 A megadott névvel rendelkező kurzor nem létezik. A megadott névvel rendelkező kurzorváltozó nem létezik, vagy ha van ilyen, még nincs hozzá hozzárendelve kurzor.

1 A dinamikus kurzorok soha nem adják vissza ezt az eredményt.

Példák

Ez a példa a függvényt használja a CURSOR_STATUS kurzor állapotának megjelenítésére a deklaráció után, a megnyitás után és a bezárása után.

CREATE TABLE #TMP (ii INT);
GO

INSERT INTO #TMP (ii) VALUES (1);
INSERT INTO #TMP (ii) VALUES (2);
INSERT INTO #TMP (ii) VALUES (3);
GO

-- Create a cursor
DECLARE cur CURSOR
FOR SELECT * FROM #TMP;

-- Display the status of the cursor before and after opening
-- and closing the cursor

SELECT CURSOR_STATUS('global', 'cur') AS 'After declare';

OPEN cur;
SELECT CURSOR_STATUS('global', 'cur') AS 'After Open';

CLOSE cur;
SELECT CURSOR_STATUS('global', 'cur') AS 'After Close';

-- Remove the cursor.
DEALLOCATE cur;

-- Drop the table.
DROP TABLE #TMP;

Itt van az eredmények összessége.

After declare
---------------
-1

After Open
----------
1

After Close
-----------
-1