sys.sp_cursor_list (Transact-SQL)

Van toepassing op:SQL Server

Rapporteert de attributen van servercursors die momenteel open zijn voor de verbinding.

Transact-SQL syntaxis-conventies

Syntax

sys.sp_cursor_list
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_scope = ] cursor_scope
[ ; ]

Arguments

[ @cursor_return = ] cursor_return OUTPUT

De naam van een gedeclareerde cursorvariabele. @cursor_return is een OUTPUT parameter van het type CURSOR. De cursor is een scrollbare, dynamische, alleen-lezen cursor.

[ @cursor_scope = ] cursor_scope

Geeft het niveau van de cursors aan die gerapporteerd moeten worden. @cursor_scope is int, zonder standaard, en kan een van deze waarden zijn.

Waarde Description
1 Rapporteer alle lokale cursors.
2 Rapporteer alle globale cursors.
3 Rapporteer zowel lokale als globale cursors.

Codewaarden retourneren

None.

Cursors keerden terug

sp_cursor_list geeft zijn rapport terug als een Transact-SQL cursor-uitvoerparameter, niet als een resultaatset. Dit maakt het mogelijk dat Transact-SQL batches, opgeslagen procedures en triggers één rij tegelijk met de output werken. Het betekent ook dat de procedure niet direct vanuit database-API-functies kan worden aangeroepen. De cursor-uitvoerparameter moet gebonden zijn aan een programmavariabele, maar de database-API's ondersteunen geen binding van cursorparameters of variabelen.

Dit is het formaat van de cursor die door sp_cursor_listwordt teruggegeven. Het formaat van de cursor is hetzelfde als het formaat dat door sp_describe_cursorwordt teruggegeven.

Kolomnaam Gegevenstype Description
reference_name sysname De naam verwees vroeger naar de cursor. Als de verwijzing naar de cursor via de naam op een DECLARE CURSOR statement was, is de referentienaam hetzelfde als de cursornaam. Als de referentie naar de cursor via een variabele was, is de referentienaam de naam van de cursorvariabele.
cursor_name sysname De naam van de cursor uit een DECLARE CURSOR statement. In SQL Server, als de cursor is aangemaakt door een cursorvariabele aan een cursor te zetten, cursor_name wordt de naam van de cursorvariabele teruggegeven. In eerdere releases geeft deze outputkolom een door het systeem gegenereerde naam terug.
cursor_scope smallint 1 = LOCAL
2 = GLOBAL
status smallint Dezelfde waarden als gerapporteerd door de CURSOR_STATUS systeemfunctie:

1 = De cursor waarnaar wordt verwezen door de cursornaam of variabele is open. Als de cursor ongevoelig, statisch of keyset is, is het minstens één rij. Als de cursor dynamisch is, heeft de resultaatset nul of meer rijen.

0 = De cursor waarnaar wordt verwezen door de cursornaam of variabele is open maar heeft geen rijen. Dynamische cursors geven deze waarde nooit terug.

-1 = De cursor waarnaar wordt verwezen door de cursornaam of variabele is gesloten.

-2 = Gilt alleen voor cursorvariabelen. Er is geen cursor toegewezen aan de variabele. Mogelijk wees een OUTPUT parameter een cursor toe aan de variabele, maar de opgeslagen procedure sloot de cursor voordat deze terugkeerde.

-3 = Een cursor of cursorvariabele met de opgegeven naam bestaat niet, of de cursorvariabele heeft geen cursor toegewezen.
model smallint 1 = Ongevoelig (of statisch)
2 = Keyset
3 = Dynamisch
4 = Snel vooruitspoelen
concurrency smallint 1 = Alleen-lezen
2 = Scroll locks
3 = Optimistisch
scrollable smallint 0 = Alleen vooruit
1 = Scrollbaar
open_status smallint 0 = Gesloten
1 = Open
cursor_rows int Het aantal kwalificatierijen in de resultaatsverzameling. Voor meer informatie, zie @@CURSOR_ROWS.
fetch_status smallint De status van de laatste ophaalactie op deze cursor. Voor meer informatie, zie @@FETCH_STATUS:

0 = Ophalen geslaagd.
-1 = Ophalen mislukte of buiten de grenzen van de cursor ligt.
-2 = De gevraagde rij ontbreekt.
-9 = Er is geen fetch op de cursor geweest.
column_count smallint Het aantal kolommen in de cursorresultaatset.
row_count smallint Het aantal rijen dat door de laatste bewerking op de cursor wordt beïnvloed. Voor meer informatie, zie @@ROWCOUNT.
last_operation smallint De laatste bewerking die op de cursor werd uitgevoerd:

0 = Er werden geen bewerkingen op de cursor uitgevoerd.
1 = OPEN
2 = FETCH
3 = INSERT
4 = UPDATE
5 = DELETE
6 = CLOSE
7 = DEALLOCATE
cursor_handle int Een unieke waarde die de cursor binnen de scope van de server identificeert.

Remarks

sp_cursor_list produceert een lijst van de huidige servercursors die door de verbinding worden geopend en beschrijft de globale attributen voor elke cursor, zoals de scrollbaarheid en updatebaarheid van de cursor. De door sp_cursor_list genoemde cursors zijn onder andere:

  • Transact-SQL servercursors.

  • API-servercursors worden geopend door een ODBC-applicatie die vervolgens wordt aangeroepen SQLSetCursorName om de cursor te benoemen.

Gebruik sp_describe_cursor_columns voor een beschrijving van de attributen van de resultaatset die door de cursor wordt teruggegeven. Gebruik sp_describe_cursor_tables dit voor een rapport van de basistabellen waarnaar de cursor verwijst. sp_describe_cursor rapporteert dezelfde informatie als sp_cursor_list, maar alleen voor een gespecificeerde cursor.

Permissions

Uitvoeringsrechten worden standaard naar de publieke rol.

Examples

Het volgende voorbeeld opent een globale cursor en gebruikt sp_cursor_list deze om te rapporteren over de attributen van de cursor.

USE AdventureWorks2022;
GO

-- Declare and open a keyset-driven cursor.
DECLARE abc CURSOR KEYSET
    FOR SELECT LastName
        FROM Person.Person
        WHERE LastName LIKE 'S%';

OPEN abc;

-- Declare a cursor variable to hold the cursor output variable
-- from sp_cursor_list.
DECLARE @Report AS CURSOR;

-- Execute sp_cursor_list into the cursor variable.
EXECUTE master.dbo.sp_cursor_list
    @cursor_return = @Report OUTPUT,
    @cursor_scope = 2;

-- Fetch all the rows from the sp_cursor_list output cursor.
FETCH NEXT FROM @Report;

WHILE (@@FETCH_STATUS <> -1)
BEGIN
    FETCH NEXT FROM @Report;
END

-- Close and deallocate the cursor from sp_cursor_list.
CLOSE @Report;

DEALLOCATE @Report;
GO

-- Close and deallocate the original cursor.
CLOSE abc;

DEALLOCATE abc;
GO