sys.sp_describe_cursor_tables (Transact-SQL)

Van toepassing op:SQL Server

Rapporteert de objecten of basistabellen waarnaar wordt verwezen door een servercursor.

Transact-SQL syntaxis-conventies

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 OUTPUT

De naam van een gedeclareerde cursorvariabele om de cursoroutput te ontvangen. @cursor_return is een OUTPUTcursor zonder standaard, en mag niet gekoppeld zijn aan cursors op het moment sp_describe_cursor_tables 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'

Wanneer @cursor_source is local, @cursor_identity is de naam van een cursor die wordt gemaakt door een DECLARE CURSOR instructie die ofwel het LOCAL trefwoord heeft, of die standaard op LOCAL.

Wanneer @cursor_source is global, @cursor_identity is de naam van een cursor die wordt gemaakt door een DECLARE CURSOR instructie die ofwel het GLOBAL trefwoord heeft, of die standaard op GLOBAL. @cursor_identity kan ook de naam zijn van een API-servercursor die wordt geopend door een ODBC-applicatie die vervolgens de cursor benoemt door aan te roepen SQLSetCursorName.

Wanneer @cursor_source is variable, is @cursor_identity de naam van een cursorvariabele die aan een open cursor is gekoppeld.

@cursor_identity is nvarchar(128), zonder standaard.

Codewaarden retourneren

None.

Cursors keerden terug

sp_describe_cursor_tableskapselt zijn rapport als een Transact-SQL cursor-uitvoerparameter. 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 API-functies kan worden aangeroepen. De cursor-uitvoerparameter moet aan een programmavariabele worden gekoppeld, maar de API's ondersteunen geen bindcursorparameters of -variabelen.

De volgende tabel toont het formaat van de cursor die wordt teruggegeven door sp_describe_cursor_tables.

Kolomnaam Gegevenstype Description
table_owner sysname Gebruikers-ID van de tabel-eigenaar.
table_name sysname Naam van het object of de basistabel. In SQL Server geven servercursors altijd het door de gebruiker opgegeven object terug, niet de basistabellen.
optimizer_hint smallint Bitmap die bestaat uit een of meer van de volgende opties:

1 = Rij-niveau vergrendeling (ROWLOCK)
4 = Pagina-niveau vergrendeling (PAGELOCK)
8 = Tabel slot (TABLOCK)
16 = Exclusieve tafelvergrendeling (TABLOCKX)
32 = Update-lock (UPDLOCK)
64 = Geen slot (NOLOCK)
128 = Snelle optie op de eerste rij (FASTFIRST)
4096 = Lees herhaalbare semantische taal wanneer gebruikt met DECLARE CURSOR (HOLDLOCK)

Wanneer meerdere opties worden aangeboden, gebruikt het systeem de meest beperkende. Toont echter sp_describe_cursor_tables de vlaggen die in de query zijn gespecificeerd.
lock_type smallint Scroll-lock type wordt expliciet of impliciet gevraagd voor elke basistabel die deze cursor onderligt. De waarde kan een van de volgende opties zijn:

0 = Geen
1 = Gedeeld
3 = Update
server_name Systeemnaam, nul Naam van de gekoppelde server waarop de tafel staat. NULL wanneer OPENQUERY of OPENROWSET worden gebruikt.
objectid int Object-ID van de tabel. 0 wanneer OPENQUERY of OPENROWSET worden gebruikt.
dbid int ID van de database waarin de tabel staat. 0 wanneer OPENQUERY of OPENROWSET worden gebruikt.
dbname Systeemnaam, nul Naam van de database waarin de tabel zich bevindt. NULL wanneer OPENQUERY of OPENROWSET worden gebruikt.

Remarks

sp_describe_cursor_tables beschrijft de basistabellen waarnaar wordt verwezen door een servercursor. Voor een beschrijving van de attributen van de resultaatset die door de cursor wordt teruggegeven, gebruik sp_describe_cursor_columns. Voor een beschrijving van de globale kenmerken van de cursor, zoals de scrollbaarheid en updatebaarheid, gebruik sp_describe_cursor. 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_tables het om te rapporteren op de tabellen waarnaar de cursor verwijst.

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