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


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. Возвращенный курсор имеет свойства scrollable, dynamic и read-only.
  • [ @cursor_source = ] { N'local'| N'global' | N'variable' }
    Задает, был ли переданный курсор определен с помощью имени локального курсора, глобального курсора или переменной курсора. Этот аргумент имеет тип nvarchar(30).
  • [ @cursor_identity = ] N'local_cursor_name'
    Имя курсора, созданного с помощью инструкции DECLARE CURSOR, содержащей ключевое слово 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 описывает базовые таблицы, на которые ссылается серверный курсор. Используйте процедуру sp_describe_cursor_columns для описания атрибутов результирующего набора, возвращаемого курсором. Для описания общих характеристик курсора, таких как прокручивание и способность к обновлению, используйте процедуру sp_describe_cursor. Для получения отчета о серверных курсорах Transact-SQL, видимых при соединении, используйте процедуру sp_cursor_list.

Разрешения

Необходимо быть членом роли public.

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

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

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

Имя столбца Тип данных Описание

table owner

sysname

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

Table_name

sysname

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

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 выводится список таблиц, на которые курсор ссылается.

USE AdventureWorks
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Contact
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)

Другие ресурсы

Курсоры (ядро СУБД)

Справка и поддержка

Получение помощи по SQL Server 2005