sp_describe_cursor_tables (Transact-SQL)
Область применения: SQL Server
Выводит объекты или базовые таблицы, на которые ссылается серверный курсор.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_describe_cursor_tables
[ @cursor_return = ] cursor_return OUTPUT
, [ @cursor_source = ] { N'local' | N'global' | N'*cursor_source*' }
, [ @cursor_identity = ] N'cursor_identity'
[ ; ]
Аргументы
[ @cursor_return = ] cursor_return OUTPUT
Имя объявленной переменной курсора для получения выходных данных курсора. @cursor_return является курсором OUTPUT без значения по умолчанию и не должен быть связан с какими-либо курсорами во время sp_describe_cursor_tables
вызова. Возвращаемый курсор является прокручиваемым, динамическим и доступным только для чтения.
[ @cursor_source = ] { N'local' | N'global' | N'cursor_source' }
Указывает, задан ли возвращаемый курсор с помощью имени локального курсора, глобального курсора или курсорной переменной. @cursor_source — nvarchar(30), без значения по умолчанию.
[ @cursor_identity = ] N'cursor_identity'
Если @cursor_sourcelocal
, @cursor_identity — это имя курсора, созданного оператором DECLARE CURSOR
LOCAL
с ключевым словом или значением по умолчаниюLOCAL
.
Если @cursor_sourceglobal
, @cursor_identity — это имя курсора, созданного оператором DECLARE CURSOR
GLOBAL
с ключевым словом или значением по умолчаниюGLOBAL
. @cursor_identity также может быть именем курсора сервера API, открываемого приложением ODBC, который затем назвал курсор путем вызоваSQLSetCursorName
.
Если @cursor_sourcevariable
, @cursor_identity — это имя переменной курсора, связанной с открытым курсором.
@cursor_identity — nvarchar(128), без значения по умолчанию.
Значения кода возврата
Нет.
Возвращенные курсоры
sp_describe_cursor_tables
инкапсулирует отчет как выходной параметр курсора Transact-SQL. Это позволяет пакетам Transact-SQL, хранимым процедурам и триггерам работать с выходными данными по одной строке одновременно. Это также означает, что процедура не может вызываться непосредственно из функций API. Выходной параметр курсора должен быть привязан к программной переменной, но API-интерфейсы не поддерживают привязку параметров курсора или переменных.
В следующей таблице показан формат курсора, возвращаемого sp_describe_cursor_tables
.
Имя столбца | Тип данных | Description |
---|---|---|
table_owner |
sysname | Идентификатор пользователя владельца таблицы. |
table_name |
sysname | Имя объекта или базовой таблицы. В SQL Server курсоры сервера всегда возвращают указанный пользователем объект, а не базовые таблицы. |
optimizer_hint |
smallint | Растровое изображение, состоящее из одного или нескольких следующих параметров: 1 = блокировка на уровне строк ( ROWLOCK )4 = блокировка на уровне страницы ( PAGELOCK )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 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 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