sys.sp_describe_cursor_columns (Transact-SQL)

Van toepassing op:SQL Server

Rapporteert de attributen van de kolommen in de resultaatset van een servercursor.

Transact-SQL syntaxis-conventies

Syntax

sys.sp_describe_cursor_columns
    [ @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_columns 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 die 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_columns kapselt zijn rapport als 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 van sp_describe_cursor_columns.

Kolomnaam Gegevenstype Description
column_name sysname Naam toegewezen aan de kolom van de resultaatset. De kolom is NULL als de kolom is gespecificeerd zonder een bijbehorende AS clausule.

Nullable.
ordinal_position int Relatieve positie van de kolom vanaf de meest linkse kolom in de resultaatset. De eerste kolom bevindt zich op positie 0.
column_characteristics_flags int Een bitmasker dat de informatie aangeeft die in DBCOLUMNFLAGS OLE DB is opgeslagen. Kan één of een combinatie zijn van de volgende waarden:

1 = Bladwijzer
2 = Vaste lengte
4 = Ongeldig
8 = Rijversiebeheer
16 = Updateerbare kolom (ingesteld voor geprojecteerde kolommen van een cursor zonder FOR UPDATE clausule en, als er zo'n kolom is, kan er per cursor slechts één zijn).

Wanneer bitwaarden worden gecombineerd, gelden de eigenschappen van de gecombineerde bitwaarden. Bijvoorbeeld, als de bitwaarde is 6, is de kolom een kolom met vaste lengte (2), nul (4) kolom.
column_size int Maximaal mogelijke grootte voor een waarde in deze kolom.
data_type_sql smallint Nummer dat het SQL Server-datatype van de kolom aangeeft.
column_precision tinyint Maximale precisie van de kolom volgens de bPrecision waarde in OLE DB.
column_scale tinyint Aantal cijfers rechts van het decimale punt voor de numerieke of decimale datatypes volgens de bScale waarde in OLE DB.
order_position int Als de kolom deelneemt aan de ordening van de resultaatset, is de positie van de kolom in de ordesleutel ten opzichte van de meest linkse kolom.
order_direction Varchar(1) A = De kolom staat in de ordensleutel en de volgorde is stijgend.
D = De kolom staat in de order-key en de volgorde daalt.

NULL = De kolom neemt niet deel aan het ordenen.

Nullable.
hidden_column smallint 0 = Deze kolom verschijnt in de select-lijst.

1 = Gereserveerd voor toekomstig gebruik.
columnid int Kolom-ID van de basiskolom. Als de kolom van de resultaatverzameling is opgebouwd uit een expressie, columnid is -1.
objectid int Object-ID van het object of de basistabel die de kolom levert. Als de kolom van de resultaatverzameling is opgebouwd uit een expressie, objectid is -1.
dbid int ID van de database die de basistabel bevat die de kolom levert. Als de kolom van de resultaatverzameling is opgebouwd uit een expressie, dbid is -1.
dbname sysname Naam van de database die de basistabel bevat die de kolom levert. Als de kolom van de resultaatset is opgebouwd uit een expressie, is NULLdbname .

Nullable.

Remarks

sp_describe_cursor_columns beschrijft de attributen van de kolommen in de resultaatset van een servercursor, zoals de naam en het datatype van elke cursor. Gebruik sp_describe_cursor voor een beschrijving van de globale attributen van de servercursor. 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 .

Permissions

Vereist lidmaatschap van de openbare rol.

Examples

Het volgende voorbeeld opent een globale cursor en gebruikt sp_describe_cursor_columns deze om te rapporteren over de kolommen die in de cursor worden gebruikt.

USE AdventureWorks2022;
GO

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

OPEN abc;

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

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

-- Fetch all the rows from the sp_describe_cursor_columns 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_columns.
CLOSE @Report;

DEALLOCATE @Report;
GO

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

DEALLOCATE abc;
GO