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
См. также
Справочник
sp_describe_cursor (Transact-SQL)
sp_describe_cursor_columns (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)