Поделиться через


sp_describe_cursor_columns (Transact-SQL)

Выдает отчет об атрибутах столбцов результирующего набора серверного курсора.

Значок ссылки на разделСоглашения о синтаксисе в 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_variableOUTPUT
    Имя переменной-курсора для получения результатов. Аргумент output_cursor_variable имеет тип cursor и не имеет значения по умолчанию. Аргумент не может быть связан с какими-либо курсорами во время вызова процедуры 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).

Значения кодов возврата

Нет

Замечания

Процедура sp_describe_cursor_columns описывает атрибуты столбцов в результирующем наборе серверного курсора, такие как имя и тип данных, для каждого курсора. Процедура sp_describe_cursor используется для получения описания глобальных атрибутов серверного курсора. Процедура sp_describe_cursor_tables используется для получения отчета по базовым таблицам, на которые ссылается курсор. Для получения отчета по серверным курсорам Transact-SQL, видимым в соединении, используется процедура sp_cursor_list.

Разрешения

Требует членства в роли public.

Возвращенные курсоры

Процедура sp_describe_cursor_columns инкапсулирует отчет в виде выходного аргумента cursor языка Transact-SQL. Это позволяет пакетам Transact-SQL, хранимым процедурам и триггерам построчно обрабатывать выходные данные. Это также означает, что процедуру нельзя вызывать непосредственно из функций API баз данных. Выходной аргумент cursor должен быть привязан к переменной, а в программных интерфейсах баз данных привязка аргументов или переменных типа cursor не поддерживается.

В следующей таблице приводится описание курсора, возвращаемого с помощью процедуры sp_describe_cursor_columns.

Имя столбца Тип данных Описание

column_name

sysname (обнуляемое)

Имя, назначенное столбцу результирующего набора. Столбец принимает значение NULL, если он был задан без сопутствующего предложения AS.

ordinal_position

int

Позиция столбца относительно крайнего левого столбца в результирующем наборе. Первый столбец находится в позиции 0.

column_characteristics_flags

int

Битовая маска параметров, хранящихся в переменной DBCOLUMNFLAGS OLE DB. Может представлять собой одно из следующих значений или их сочетание.

1 = Закладка

2 = Фиксируемая длина

4 = Обнуляемый

8 = Управление версиями строк

16 = Обновляемый столбец (устанавливается для проецируемых столбцов курсора, не имеющего предложения FOR UPDATE. Если таковой столбец имеется, то аргумент может указываться только один раз для курсора).

При сочетании битовых значений применяются характеристики комбинируемых значений. Например, если битовое значение равно 6, столбец имеет фиксированную длину (2) и является обнуляемым (4).

column_size

int

Предельно допустимый размер значения данного столбца.

data_type_sql

smallint

Число, определяющее тип данных SQL Server данного столбца.

column_precision

tinyint

Предельная точность столбца, соответствующая значению bPrecision в OLE DB.

column_scale

tinyint

Число знаков справа от десятичного разделителя для типов данных numeric и decimal, соответствующее значению bScale в OLE DB.

order_position

int

Если столбец участвует в сортировке результирующего набора, позиция столбца в ключе сортировки относительно крайнего левого столбца.

order_direction

varchar(1) (обнуляемый)

A — Столбец входит в ключ сортировки, которая производится по возрастанию.

D — Столбец входит в ключ сортировки, которая производится по убыванию.

NULL — Столбец не участвует в сортировке.

hidden_column

smallint

0 — Данный столбец отображается в списке выбора.

1 = Зарезервировано для использования в будущем.

columnid

int

Идентификатор базового столбца. Если столбец результирующего набора вычисляется, значение columnid равно -1.

objectid

int

Идентификатор объекта или базовой таблицы, служащих источником столбца. Если столбец результирующего набора вычисляется, значение objectid равно -1.

dbid

int

Идентификатор базы данных, в которой находится таблица этого столбца. Если столбец результирующего набора вычисляется, значение dbid равно -1.

dbname

sysname

(обнуляемый)

Имя базы данных, содержащей базовую таблицу, служащую источником столбца. Если столбец результирующего набора вычисляется, значение dbname равно NULL.

Примеры

Следующий пример иллюстрирует получение глобального курсора и использование процедуры sp_describe_cursor_columns для формирования отчета по столбцам этим курсором.

USE AdventureWorks;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Contact
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)

Другие ресурсы

Курсоры (ядро СУБД)

Справка и поддержка

Получение помощи по SQL Server 2005