sys.sp_describe_cursor_tables (Transact-SQL)

Gäller för:SQL Server

Rapporterar objekt eller bastabeller som refereras av en servermarkör.

Transact-SQL syntaxkonventioner

Syntax

sys.sp_describe_cursor_tables
    [ @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 OUTPUTmarkör utan standard och får inte kopplas till några markörer när sp_describe_cursor_tables den anropade tidpunkten. 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'

När @cursor_source är local, @cursor_identity är namnet på en markör skapad av en DECLARE CURSOR sats som antingen har LOCAL nyckelordet, eller som som standard är LOCAL.

När @cursor_source är global, @cursor_identity är namnet på en markör skapad av en DECLARE CURSOR sats som antingen har GLOBAL nyckelordet, eller som som standard är GLOBAL. @cursor_identity kan också vara namnet på en API-serverpekare som öppnas av en ODBC-applikation som sedan namngav markören genom att anropa SQLSetCursorName.

När @cursor_source är variable, är @cursor_identity namnet på en markörvariabel kopplad till en öppen markör.

@cursor_identity är nvarchar(128), utan standard.

Returnera kodvärden

None.

Markörer återvände

sp_describe_cursor_tables kapslar in sin rapport som en Transact-SQL markörutgå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 API-funktioner. Markörens utgångsparameter måste vara bunden till en programvariabel, men API:erna stöder inte bindningsparametrar eller variabler.

Följande tabell visar formatet på markören som returneras av sp_describe_cursor_tables.

Kolumnnamn Datatyp Description
table_owner sysname Användar-ID för tabellägaren.
table_name sysname Namnet på objektet eller bastabellen. I SQL Server returnerar servermarkörer alltid det användarspecificerade objektet, inte bastabellerna.
optimizer_hint smallint Bitmap som består av ett eller flera av följande alternativ:

1 = Låsning på radnivå (ROWLOCK)
4 = Sidnivålåsning (PAGELOCK)
8 = Tabelllås (TABLOCK)
16 = Exklusivt tabelllock (TABLOCKX)
32 = Uppdateringslås (UPDLOCK)
64 = Ingen låsning (NOLOCK)
128 = Snabb första rad-alternativ (FASTFIRST)
4096 = Läs upprepbar semantisk när den används med DECLARE CURSOR (HOLDLOCK)

När flera alternativ tillhandahålls använder systemet det mest restriktiva. Dock sp_describe_cursor_tables visas flaggorna som anges i frågan.
lock_type smallint Scroll-lock-typen begärs antingen explicit eller implicit för varje bastabell som ligger under denna markör. Värdet kan vara ett av följande alternativ:

0 = Inga
1 = Delad
3 = Uppdatering
server_name sysname, nullbar Namnet på den länkade servern där bordet finns. NULL när OPENQUERY eller OPENROWSET används.
objectid int Objekt-ID för tabellen. 0 när OPENQUERY eller OPENROWSET används.
dbid int ID för databasen där tabellen finns. 0 när OPENQUERY eller OPENROWSET används.
dbname sysname, nullbar Namnet på databasen där tabellen finns. NULL när OPENQUERY eller OPENROWSET används.

Remarks

sp_describe_cursor_tables beskriver bastabellerna som refereras av en servermarkör. För en beskrivning av attributen för resultatmängden som returneras av markören, använd sp_describe_cursor_columns. För en beskrivning av markörens globala egenskaper, såsom dess scrollbarhet och uppdateringsbarhet, använd sp_describe_cursor. För att få en rapport över de Transact-SQL servermarkörer 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_tables för att rapportera tabellerna som pekaren refererar till.

USE AdventureWorks2022;
GO

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

OPEN abc;
GO

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

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

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

DEALLOCATE @Report;
GO

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

DEALLOCATE abc;
GO