Поделиться через


sp_describe_cursor_tables (Transact-SQL)

Выводит объекты или базовые таблицы, на которые ссылается серверный курсор.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

sp_describe_cursor_tables 
     [ @cursor_return = ] output_cursor_variable OUTPUT 
     { [ , [ @cursor_source = ] N'local'
     , [ @cursor_identity = ] N'local_cursor_name' ] 
   | [ , [ @cursor_source = ] N'global'
     , [ @cursor_identity = ] N'global_cursor_name' ] 
   | [ , [ @cursor_source = ] N'variable'
     , [ @cursor_identity = ] N'input_cursor_variable' ] 
     } 
[;]

Аргументы

  • [ @cursor\_return= ] output_cursor_variableOUTPUT
    Имя объявленной переменной для получения выходных данных курсора. Аргумент output_cursor_variable имеет тип cursor, не имеет значения по умолчанию и не должен быть связан ни с одним курсором при вызове процедуры sp_describe_cursor_tables. Возвращаемый курсор является прокручиваемым, динамическим и доступным только для чтения.

  • [ @cursor\_source= ] { N'local' | N'global' | N'variable' }
    Указывает, задан ли возвращаемый курсор с помощью имени локального курсора, глобального курсора или курсорной переменной. Этот параметр имеет тип nvarchar(30).

  • [ @cursor\_identity= ] N'local_cursor_name'
    Имя курсора, созданного с помощью инструкции DECLARE CURSOR c ключевым словом LOCAL или параметром LOCAL по умолчанию. Аргумент local_cursor_name имеет тип nvarchar(128).

  • [ @cursor\_identity= ] N'global_cursor_name'
    Имя курсора, созданного с помощью инструкции DECLARE CURSOR с ключевым словом GLOBAL или параметром GLOBAL по умолчанию. Аргумент global_cursor_name также может представлять собой имя серверного курсора API, открытого приложением ODBC, которое затем назначило курсору имя путем вызова SQLSetCursorName. Аргумент global_cursor_name имеет тип nvarchar(128).

  • [ @cursor\_identity= ] N'input_cursor_variable'
    Имя переменной курсора, связанной с открытым курсором. Аргумент input_cursor_variable имеет тип nvarchar(128).

Значения кодов возврата

Нет

Возвращенные курсоры

Процедура sp_describe_cursor_tables помещает свой отчет в выходной параметр Transact-SQLcursor. Это позволяет пакетам Transact-SQL, хранимым процедурам и триггерам построчно обрабатывать выходные данные. Это также означает, что процедуру нельзя вызвать напрямую из функций API-интерфейса. Выходной параметр типа cursor должен быть привязан к программной переменной, но API-интерфейсы баз данных не поддерживают привязку параметров cursor или переменных.

В приведенной ниже таблице показан формат курсора, возвращенного процедурой sp_describe_cursor_tables.

Имя столбца

Тип данных

Описание

table owner

sysname

Идентификатор пользователя владельца таблицы.

Table_name

sysname

Имя объекта или базовой таблицы. В SQL Server серверные курсоры всегда возвращают объекты, определенные пользователем, а не базовые таблицы.

Optimizer_hints

smallint

Битовая карта одного или нескольких следующих значений.

1 = Блокировка на уровне строк (ROWLOCK).

4 = Блокировка на уровне страниц (ROWLOCK).

8 = Блокировка таблицы (TABLOCK).

16 = Монопольная блокировка таблицы (TABLOCKX).

32 = Блокировка обновления (UPDLOCK).

64 = Нет блокировки (NOLOCK).

128 = Параметр перемотки первой строки (FASTFIRST).

4096 = Считать повторяемую семантику с помощью DECLARE CURSOR (HOLDLOCK).

При предоставлении нескольких параметров система использует параметр с наибольшими ограничениями. Однако процедура sp_describe_cursor_tables отображает флаги, которые указываются в запросе.

lock_type

smallint

Тип блокировки прокрутки, запрашиваемый явно или неявно для каждой базовой таблицы, на которой основан данный курсор. Значение может быть одним из следующих:

0 = никакое

1 = общее

3 = обновление

server_name

sysname, nullable

Имя связанного сервера, на котором находится таблица. NULL, если используются предложения OPENQUERY или OPENROWSET.

Objectid

int

Идентификатор объекта таблицы. 0, если используются предложения OPENQUERY или OPENROWSET.

dbid

int

Идентификатор базы данных, в которой расположена указанная таблица. 0, если используются предложения OPENQUERY или OPENROWSET.

dbname

sysname, nullable

Имя базы данных, в которой расположена указанная таблица. NULL, если используются предложения OPENQUERY или OPENROWSET.

Замечания

Процедура sp_describe_cursor_tables описывает базовые таблицы, на которые ссылается серверный курсор. Для получения описания атрибутов результирующего набора, возвращаемого курсором, воспользуйтесь процедурой sp_describe_cursor_columns. Для описания общих характеристик курсора, таких как прокручивание и возможность обновления, воспользуйтесь процедурой sp_describe_cursor. Для получения отчета по серверным курсорам Transact-SQL, видимым в соединении, воспользуйтесь процедурой sp_cursor_list.

Разрешения

Необходимо членство в роли public.

Примеры

В следующем примере открывается глобальный курсор, а затем с помощью процедуры sp_describe_cursor_tables выводится список таблиц, на которые курсор ссылается.

USE AdventureWorks2012;
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 CURSOR;

-- Execute sp_describe_cursor_tables into the cursor variable.
EXEC 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

См. также

Справочник

CURSOR_STATUS (Transact-SQL)

DECLARE CURSOR (Transact-SQL)

sp_cursor_list (Transact-SQL)

sp_describe_cursor (Transact-SQL)

sp_describe_cursor_columns (Transact-SQL)

Системные хранимые процедуры (Transact-SQL)

Основные понятия

Курсоры