sys.sp_describe_cursor_columns (Transact-SQL)

Gäller för:SQL Server

Rapporterar attributen för kolumnerna i resultatuppsättningen för en servermarkör.

Transact-SQL syntaxkonventioner

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 UTGÅNG

Namnet på en deklarerad markörvariabel för att ta emot markörens utdata. @cursor_return är en OUTPUT parameter av typen int, utan standard, och får inte vara kopplad till några markörer när sp_describe_cursor_columns den anropas. Markören som returneras är en rullbar, dynamisk, skrivskyddad markör.

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

Specificerar om markören som rapporteras anges genom att använda namnet på en lokal markör, en global markör eller en markörvariabel. @cursor_source är nvarchar(30), utan standard.

[ @cursor_identity = ] N'cursor_identity'

Namnet på en markör skapas av ett DECLARE CURSOR uttalande. @cursor_identity är nvarchar(128), utan standard.

  • Om markören har LOCAL nyckelordet, eller är standardinställd på LOCAL, är @cursor_identity .local

  • Om markören har GLOBAL nyckelordet, eller är standardinställd på GLOBAL, är @cursor_identity .global @cursor_identity kan också vara namnet på en API-serverpekare som öppnas av en ODBC-applikation och sedan namnges genom att anropa SQLSetCursorName.

  • Annars är @cursor_identity namnet på en markörvariabel kopplad till en öppen markör.

Returnera kodvärden

None.

Markörer återvände

sp_describe_cursor_columns kapslar in sin rapport som en Transact-SQL cursor utgångsparameter. Detta möjliggör att Transact-SQL batcher, lagrade procedurer och triggers kan arbeta med utdata en rad i taget. Detta innebär också att proceduren inte kan anropas direkt från databas-API-funktioner. Utdataparametern cursor måste vara bunden till en programvariabel, men databas-API:erna stöder inte bindningsparametrar cursor eller variabler.

Följande tabell visar formatet på markören som returneras genom att använda sp_describe_cursor_columns.

Kolumnnamn Datatyp Description
column_name sysname Namn tilldelat resultatuppsättningen. Kolumnen är NULL om kolumnen specificerades utan en tillhörande AS klausul.

Nullable.
ordinal_position int Relativ position för kolumnen från den vänstra kolumnen i resultatmängden. Den första kolumnen är på plats 0.
column_characteristics_flags int En bitmask som anger informationen som lagras i DBCOLUMNFLAGS OLE DB. Kan vara ett eller en kombination av följande värden:

1 = Bokmärke
2 = Fast längd
4 = Nullbar
8 = Radversionering
16 = Uppdaterbar kolumn (satt för projicerade kolumner i en markör som inte är en FOR UPDATE klausul och, om det finns en sådan kolumn, kan bara vara en per markör).

När bitvärden kombineras gäller egenskaperna hos de kombinerade bitvärdena. Till exempel, om bitvärdet är 6, är kolumnen en kolumn med fast längd (2), nullbar (4) kolumn.
column_size int Maximal möjlig storlek för ett värde i denna kolumn.
data_type_sql smallint Nummer som anger SQL Server-datatypen för kolumnen.
column_precision pytteliten Maximal precision för kolumnen enligt bPrecision värdet i OLE DB.
column_scale pytteliten Antal siffror till höger om decimalpunkten för de numeriska eller decimala datatyperna enligt bScale värdet i OLE DB.
order_position int Om kolumnen deltar i ordningen av resultatmängden, är kolumnens position i ordningsnyckeln relativt den vänstra kolumnen.
order_direction varchar(1) A = Kolumnen är i ordningsnyckeln och ordningen stiger.
D = Kolumnen är i ordningsnyckeln och ordningen är nedåtgående.

NULL = Kolumnen deltar inte i ordningen.

Nullable.
hidden_column smallint 0 = denna kolumn visas i select-listan.

1 = Reserverad för framtida bruk.
columnid int Kolumn-ID för baskolumnen. Om resultatmängdskolumnen byggdes från ett uttryck, columnid är -1.
objectid int Objekt-ID för objektet eller bastabellen som tillhandahåller kolumnen. Om resultatmängdskolumnen byggdes från ett uttryck, objectid är -1.
dbid int ID för databasen som innehåller bastabellen som tillhandahåller kolumnen. Om resultatmängdskolumnen byggdes från ett uttryck, dbid är -1.
dbname sysname Namnet på databasen som innehåller bastabellen som tillhandahåller kolumnen. Om resultatmängdskolumnen byggdes från ett uttryck är NULLdbname .

Nullable.

Remarks

sp_describe_cursor_columns beskriver attributen för kolumnerna i resultatuppsättningen för en servermarkör, såsom namnet och datatypen för varje markör. Använd sp_describe_cursor för en beskrivning av de globala attributen för servermarkören. Använd sp_describe_cursor_tables för en rapport över bastabellerna som pekaren refererar till. För att få en rapport över de Transact-SQL servermarkörerna som är synliga på anslutningen, använd sp_cursor_list.

Permissions

Kräver medlemskap i offentlig roll.

Examples

Följande exempel öppnar en global markör och används sp_describe_cursor_columns för att rapportera kolumnerna som används i markören.

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