sys.sp_describe_cursor_tables (Transact-SQL)

Dotyczy:SQL Server

Raportuje obiekty lub tabele bazowe odwołane przez kursor serwera.

Transact-SQL konwencje składni

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 WYJŚCIE

Nazwa zadeklarowanej zmiennej kursora, aby otrzymać wyjście kursora. @cursor_return jest OUTPUTkursorem, bez domyślnego oznaczenia, i nie może być powiązany z żadnymi kursorami w momencie sp_describe_cursor_tables wywołania. Kursor zwracany to przewijany, dynamiczny, tylko do odczytu.

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

Określa, czy raportowany kursor jest określony za pomocą nazwy lokalnego kursora, kursora globalnego lub zmiennej kursora. @cursor_source to nvarchar(30), bez domyślnego punktu domyślnego.

[ @cursor_identity = ] N'cursor_identity'

Gdy @cursor_source jest , local@cursor_identity jest nazwą kursora utworzonego przez zdanie zawierające DECLARE CURSORLOCAL słowo kluczowe lub domyślnie LOCAL.

Gdy @cursor_source jest , global@cursor_identity jest nazwą kursora utworzonego przez zdanie zawierające DECLARE CURSORGLOBAL słowo kluczowe lub domyślnie GLOBAL. @cursor_identity może być także nazwą kursora serwera API otwartego przez aplikację ODBC, która następnie nazywała kursor, wywołując SQLSetCursorName.

Gdy @cursor_source jest , variable@cursor_identity jest nazwą zmiennej kursora powiązanej z kursorem otwartym.

@cursor_identity to nvarchar(128), bez domyślnego punktu.

Zwracanie wartości kodu

Żaden.

Kursory powróciły

sp_describe_cursor_tables Enkapsuluje swój raport jako parametr wyjściowy kursora Transact-SQL. Pozwala to Transact-SQL partiom, procedurom przechowywanym i wyzwalaczom pracować z wyjściem wiersz po wierszu. Oznacza to również, że procedura nie może być wywołana bezpośrednio z funkcji API. Parametr wyjściowy kursora musi być powiązany ze zmienną programu, ale API nie obsługują parametrów ani zmiennych bind kursora .

Poniższa tabela pokazuje format kursora zwracanego przez sp_describe_cursor_tables.

Nazwa kolumny Typ danych Description
table_owner sysname ID użytkownika właściciela tabeli.
table_name sysname Nazwa obiektu lub tabeli bazowej. W SQL Server kursory serwera zawsze zwracają obiekt określony przez użytkownika, a nie tabele bazowe.
optimizer_hint smallint Bitmapa, składająca się z jednej lub kilku z następujących opcji:

1 = Blokowanie na poziomie wiersza (ROWLOCK)
4 = Blokowanie na poziomie strony (PAGELOCK)
8 = Blokada stołu (TABLOCK)
16 = Wyłączna blokada stołu (TABLOCKX)
32 = Blokada aktualizacji (UPDLOCK)
64 = Brak blokady (NOLOCK)
128 = Szybka opcja w pierwszym rzędzie (FASTFIRST)
4096 = Odczyt powtarzalnej semantyki przy użyciu (DECLARE CURSORHOLDLOCK)

Gdy podanych jest wiele opcji, system stosuje najbardziej restrykcyjne. Jednak pokazuje sp_describe_cursor_tables flagi określone w zapytaniu.
lock_type smallint Typ blokady przewijania żądany jest wyraźnie lub domyślnie dla każdej bazowej tabeli leżącej u podstaw tego kursora. Wartość ta może być jedną z następujących opcji:

0 = brak
1 = Współdzielone
3 = Aktualizacja
server_name sysname, nullable Nazwa powiązanego serwera, na którym znajduje się stół. NULL gdy OPENQUERY lub OPENROWSET są używane.
objectid int Identyfikator obiektu tabeli. 0, gdy OPENQUERY są używane lub OPENROWSET (or ).
dbid int ID bazy danych, w której znajduje się tabela. 0, gdy OPENQUERY są używane lub OPENROWSET (or ).
dbname sysname, nullable Nazwa bazy danych, w której znajduje się tabela. NULL gdy OPENQUERY lub OPENROWSET są używane.

Remarks

sp_describe_cursor_tables opisuje tabele bazowe odwoływane przez kursor serwera. Aby opisać atrybuty zbioru wyników zwracanych przez kursor, użyj sp_describe_cursor_columns. Aby opisać globalne cechy kursora, takie jak jego przewijanie i aktualizowalność, użyj sp_describe_cursor. Aby uzyskać raport o Transact-SQL kursorach serwera widocznych na połączeniu, użyj sp_cursor_list.

Permissions

Wymaga członkostwa w publicznej roli .

Examples

Poniższy przykład otwiera globalny kursor i służy sp_describe_cursor_tables do raportowania tabel odwołanych przez kursor.

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