sp_describe_cursor_columns (Transact-SQL)
Область применения: SQL Server
Выдает отчет об атрибутах столбцов результирующего набора серверного курсора.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_describe_cursor_columns
[ @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 типа int без значения по умолчанию и не должен быть связан с курсорами во время sp_describe_cursor_columns
вызова. Возвращаемый курсор является прокручиваемым, динамическим и доступным только для чтения.
[ @cursor_source = ] { N'local' | N'global' | N'cursor_source' }
Указывает, указан ли указанный курсор с помощью имени локального курсора, глобального курсора или переменной курсора. @cursor_source — nvarchar(30), без значения по умолчанию.
[ @cursor_identity = ] N'cursor_identity'
Имя курсора, созданного инструкцией DECLARE CURSOR
. @cursor_identity — nvarchar(128), без значения по умолчанию.
Если курсор имеет ключевое
LOCAL
слово или по умолчаниюLOCAL
имеет значение , @cursor_identity .local
Если курсор имеет ключевое
GLOBAL
слово или по умолчаниюGLOBAL
имеет значение , @cursor_identity .global
@cursor_identity также может быть именем курсора сервера API, открываемого приложением ODBC, а затем именованным путем вызоваSQLSetCursorName
.В противном случае @cursor_identity — это имя переменной курсора, связанной с открытым курсором.
Значения кода возврата
Нет.
Возвращенные курсоры
sp_describe_cursor_columns
инкапсулирует свой отчет как выходной параметр Transact-SQL cursor
. Это позволяет пакетам Transact-SQL, хранимым процедурам и триггерам работать с выходными данными по одной строке одновременно. Это также означает, что процедура не может вызываться непосредственно из функций API базы данных. Выходной cursor
параметр должен быть привязан к переменной программы, но API базы данных не поддерживают параметры привязки cursor
или переменные.
В следующей таблице показан формат курсора, возвращаемого с помощью sp_describe_cursor_columns
.
Имя столбца | Тип данных | Description |
---|---|---|
column_name |
sysname | Имя, назначенное столбцу результирующего набора. Столбец имеет значение NULL , если столбец был указан без сопутствующего AS предложения.Допускает значение NULL. |
ordinal_position |
int | Позиция столбца относительно крайнего левого столбца в результирующем наборе. Первый столбец находится в позиции 0 . |
column_characteristics_flags |
int | Битовая маска, указывающая сведения, хранящиеся в DBCOLUMNFLAGS OLE DB. Может быть одним или сочетанием следующих значений:1 = Закладка2 = фиксированная длина4 = nullable8 = управление версиями строк16 = обновляемый столбец (устанавливается для проецируемых столбцов курсора, который не FOR UPDATE является предложением, и, если такой столбец существует, может быть только один на курсор).При сочетании битовых значений применяются характеристики комбинируемых значений. Например, если битовое значение равно 6 , столбец — это столбец фиксированной длины (2 ), столбец, допускающий значение NULL (4 ). |
column_size |
int | Предельно допустимый размер значения данного столбца. |
data_type_sql |
smallint | Число, указывающее тип данных SQL Server столбца. |
column_precision |
tinyint | Максимальная точность столбца по значению bPrecision в OLE DB. |
column_scale |
tinyint | Число цифр справа от десятичной запятой для числовых или десятичных типов данных по значению bScale в OLE DB. |
order_position |
int | Если столбец участвует в сортировке результирующего набора, позиция столбца в ключе сортировки относительно крайнего левого столбца. |
order_direction |
varchar(1) | A = столбец находится в ключе порядка, а порядок возрастает.D = столбец находится в ключе порядка, а упорядочение происходит по убыванию.NULL = столбец не участвует в упорядочении.Допускает значение NULL. |
hidden_column |
smallint | 0 = этот столбец отображается в списке выбора.1 = зарезервировано для дальнейшего использования. |
columnid |
int | Идентификатор базового столбца. Если столбец результирующих наборов был построен из выражения, columnid имеет значение -1 . |
objectid |
int | Идентификатор объекта или базовой таблицы, служащих источником столбца. Если столбец результирующих наборов был построен из выражения, objectid имеет значение -1 . |
dbid |
int | Идентификатор базы данных, в которой находится таблица этого столбца. Если столбец результирующих наборов был построен из выражения, dbid имеет значение -1 . |
dbname |
sysname | Имя базы данных, содержащей базовую таблицу, служащую источником столбца. Если столбец результирующих наборов был создан из выражения, имя dbname NULL .Допускает значение NULL. |
Замечания
sp_describe_cursor_columns
описывает атрибуты столбцов в результирующем наборе курсора сервера, например имя и тип данных каждого курсора. Используйте sp_describe_cursor
для описания глобальных атрибутов курсора сервера. Используется sp_describe_cursor_tables
для отчета базовых таблиц, на которые ссылается курсор. Чтобы получить отчет о курсорах Сервера Transact-SQL, видимых в соединении, используйте sp_cursor_list
.
Разрешения
Необходимо быть членом роли public.
Примеры
В следующем примере открывается глобальный курсор и используется процедура sp_describe_cursor_columns
для формирования отчета по столбцам этого курсора.
USE AdventureWorks2022;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Person;
GO
OPEN abc;
-- Declare a cursor variable to hold the cursor output variable
-- from sp_describe_cursor_columns.
DECLARE @Report CURSOR;
-- Execute sp_describe_cursor_columns into the cursor variable.
EXEC master.dbo.sp_describe_cursor_columns
@cursor_return = @Report OUTPUT,
@cursor_source = N'global',
@cursor_identity = N'abc';
-- Fetch all the rows from the sp_describe_cursor_columns 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_columns.
CLOSE @Report;
DEALLOCATE @Report;
GO
-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO