sys.sp_describe_cursor (Transact-SQL)

Van toepassing op:SQL Server

Rapporteert de attributen van een servercursor.

Transact-SQL syntaxis-conventies

Syntax

sys.sp_describe_cursor
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_source = ] { N'local' | N'global' | N'*cursor_source*' }
    , [ @cursor_identity = ] N'cursor_identity'
[ ; ]

Arguments

[ @cursor_return = ] cursor_return OUTPUT

De naam van een gedeclareerde cursorvariabele om de cursoroutput te ontvangen. @cursor_return is een OUTPUT parameter van type int, zonder standaard, en mag niet gekoppeld zijn aan cursors op het moment sp_describe_cursor dat wordt aangeroepen. De cursor die wordt teruggegeven is een scrollbare, dynamische, alleen-lezen cursor.

[ @cursor_source = ] { N'local' | N'global' | N'cursor_source' }

Specificeert of de cursor waarop wordt gerapporteerd wordt gespecificeerd door gebruik te maken van de naam van een lokale cursor, een globale cursor of een cursorvariabele. @cursor_source is nvarchar(30), zonder standaard.

[ @cursor_identity = ] N'cursor_identity'

De naam van een cursor die wordt gemaakt door een DECLARE CURSOR statement. @cursor_identity is nvarchar(128), zonder standaard.

  • Als cursor het LOCAL sleutelwoord heeft, of standaard is ingesteld op LOCAL, @cursor_identity is local.

  • Als cursor het GLOBAL sleutelwoord heeft, of standaard is ingesteld op GLOBAL, @cursor_identity is global. @cursor_identity kan ook de naam zijn van een API-servercursor die wordt geopend door een ODBC-applicatie, en vervolgens benoemd door aan te roepen SQLSetCursorName.

  • Anders is @cursor_identity de naam van een cursorvariabele die aan een open cursor is gekoppeld.

Codewaarden retourneren

None.

Cursors keerden terug

sp_describe_cursor encapsuleert zijn resultaatset in een Transact-SQL cursor outputparameter. Dit stelt Transact-SQL batches, opgeslagen procedures en triggers in staat om met de output één rij tegelijk te werken. Dit betekent ook dat de procedure niet direct vanuit database-API-functies kan worden aangeroepen. De cursor outputparameter moet gebonden zijn aan een programmavariabele, maar de database-API's ondersteunen geen bindingsparameters cursor of variabelen.

De volgende tabel toont het formaat van de cursor die wordt teruggegeven door gebruik te maken sp_describe_cursorvan . Het formaat van de cursor is hetzelfde als het formaat dat wordt teruggegeven door gebruik te maken sp_cursor_list.

Kolomnaam Gegevenstype Description
reference_name sysname De naam verwees naar de cursor. Als de verwijzing naar de cursor via de naam was die in een DECLARE CURSOR statement is gespecificeerd, is de referentienaam hetzelfde als de cursornaam. Als de referentie naar de cursor via een variabele was, is de referentienaam de naam van de variabele.
cursor_name sysname De naam van de cursor uit een DECLARE CURSOR statement. Als de cursor is gemaakt door een cursorvariabele op een cursor te zetten, cursor_name geeft deze de naam van de cursorvariabele terug. In eerdere versies van SQL Server geeft deze uitvoerkolom een door het systeem gegenereerde naam terug.
cursor_scope tinyint 1 = LOCAL
2 = GLOBAL
status int 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 tinyint 1 = Ongevoelig (of statisch)
2 = Keyset
3 = Dynamisch
4 = Snel vooruitspoelen
concurrency tinyint 1 = Alleen-lezen
2 = Scroll locks
3 = Optimistisch
scrollable tinyint 0 = Alleen vooruit
1 = Scrollbaar
open_status tinyint 0 = Gesloten
1 = Open
cursor_rows Decimaal(10,0) Aantal kwalificatierijen in de resultaatset. Voor meer informatie, zie @@CURSOR_ROWS.
fetch_status smallint 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 vond geen fetch plaats op de cursor.
column_count smallint Aantal kolommen in de cursorresultaatset.
row_count Decimaal(10,0) Aantal rijen beïnvloed door de laatste bewerking op de cursor. Voor meer informatie, zie @@ROWCOUNT.
last_operation tinyint Laatste bewerking uitgevoerd op de cursor:

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 voor de cursor binnen het bereik van de server.

Remarks

sp_describe_cursor beschrijft de attributen die globaal zijn voor een servercursor, zoals de mogelijkheid om te scrollen en te updaten. 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. Om een rapport te verkrijgen van de Transact-SQL servercursors die zichtbaar zijn op de verbinding, gebruik sp_cursor_listje .

Een DECLARE CURSOR instructie kan een cursortype opvragen dat SQL Server niet kan ondersteunen met behulp van de SELECT instructie die in de DECLARE CURSORzit. SQL Server converteert de cursor impliciet naar een type dat het kan ondersteunen met behulp van de SELECT instructie. Als TYPE_WARNING in de DECLARE CURSOR instructie is gespecificeerd, stuurt SQL Server de applicatie een informatiebericht dat een conversie is voltooid. sp_describe_cursor kan vervolgens worden aangeroepen om het type cursor te bepalen dat is geïmplementeerd.

Permissions

Vereist lidmaatschap van de openbare rol.

Examples

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

USE AdventureWorks2022;
GO

-- Declare and open a global cursor.
DECLARE abc CURSOR STATIC
    FOR SELECT LastName
        FROM Person.Person;

OPEN abc;

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

-- Execute sp_describe_cursor into the cursor variable.
EXECUTE master.dbo.sp_describe_cursor
    @cursor_return = @Report OUTPUT,
    @cursor_source = N'global',
    @cursor_identity = N'abc';

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

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

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

DEALLOCATE @Report;
GO

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

DEALLOCATE abc;
GO