sp_describe_cursor_columns (Transact-SQL)
Применимо к:SQL Server
Выдает отчет об атрибутах столбцов результирующего набора серверного курсора.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_describe_cursor_columns
[ @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_variable ВЫХОДНЫЕ ДАННЫЕ
Имя объявленной переменной для получения выходных данных курсора. output_cursor_variable является курсором без значения по умолчанию и не должен быть связан с курсорами во время вызова sp_describe_cursor_columns. Возвращаемый курсор является прокручиваемым, динамическим и доступным только для чтения.
[ ] @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 — nvarchar(128).
global_cursor_name также может быть именем курсора сервера API, открываемого приложением ODBC, а затем именованным путем вызова SQLSetCursorName.
[ ] @cursor_identity= N'input_cursor_variable'
Имя переменной курсора, связанной с открытым курсором. input_cursor_variable — nvarchar(128).
Значения кода возврата
None
Возвращенные курсоры
sp_describe_cursor_columns инкапсулирует отчет как выходной параметр курсора Transact-SQL. Это позволяет пакетам Transact-SQL, хранимым процедурам и триггерам работать с выходными данными по одной строке одновременно. Это также означает, что процедуру нельзя вызывать непосредственно из функций API баз данных. Выходной параметр курсора должен быть привязан к переменной программы, но API базы данных не поддерживают параметры или переменные курсора привязки.
В следующей таблице приводится описание курсора, возвращаемого с помощью процедуры sp_describe_cursor_columns.
Имя столбца | Тип данных | Описание: |
---|---|---|
column_name | sysname (nullable) | Имя, назначенное столбцу результирующего набора. Столбец принимает значение NULL, если он был задан без сопутствующего предложения AS. |
ordinal_position | int | Позиция столбца относительно крайнего левого столбца в результирующем наборе. Первый столбец находится в позиции 0. |
column_characteristics_flags | int | Битовая маска параметров, хранящихся в переменной DBCOLUMNFLAGS OLE DB. Может представлять собой одно из следующих значений или их сочетание. 1 = закладка 2 = фиксируемая длина 4 = допускающий значения NULL 8 = управление версиями строк 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)(nullable) | A — Столбец входит в ключ сортировки, которая производится по возрастанию. D — Столбец входит в ключ сортировки, которая упорядочивается по убыванию. NULL — Столбец не участвует в сортировке. |
hidden_column | smallint | 0 = данный столбец отображается в списке выбора. 1 = зарезервировано для использования в будущем. |
columnid | int | Идентификатор базового столбца. Если столбец результирующего набора строится из выражения, значение columnid равно -1. |
objectid | int | Идентификатор объекта или базовой таблицы, служащих источником столбца. Если столбец результирующего набора строится из выражения, значение objectid равно -1. |
dbid | int | Идентификатор базы данных, в которой находится таблица этого столбца. Если столбец результирующего набора строится из выражения, значение dbid равно -1. |
dbname | sysname (допускает значение NULL) |
Имя базы данных, содержащей базовую таблицу, служащую источником столбца. Если столбец результирующего набора строится из выражения, значение dbname равно 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
См. также
Курсоры
CURSOR_STATUS (Transact-SQL)
DECLARE CURSOR (Transact-SQL)
sp_describe_cursor (Transact-SQL)
sp_cursor_list (Transact-SQL)
sp_describe_cursor_tables (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по