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)