Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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