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


SQLColAttribute

Можно использовать SQLColAttribute для получения атрибута столбца результирующего набора для подготовленных или выполненных инструкций ODBC. Вызов SQLColAttribute в подготовленной инструкции приводит к дополнительному обращению к SQL Server. Драйвер ODBC для собственного клиента SQL Server получает данные столбца результирующего набора как часть выполнения инструкции, поэтому вызов SQLColAttribute после завершения SQLExecute или SQLExecDirect не означает дополнительного обращения к серверу.

ПримечаниеПримечание

Атрибуты ODBC идентификаторов столбца доступны не во всех результирующих наборах SQL Server.

Идентификатор поля

Описание

SQL_COLUMN_TABLE_NAME

Можно использовать для результирующих наборов, полученных от инструкций, которые формируют серверные курсоры, или для выполненных инструкций SELECT, содержащих предложение FOR BROWSE.

SQL_DESC_BASE_COLUMN_NAME

Можно использовать для результирующих наборов, полученных от инструкций, которые формируют серверные курсоры, или для выполненных инструкций SELECT, содержащих предложение FOR BROWSE.

SQL_DESC_BASE_TABLE_NAME

Можно использовать для результирующих наборов, полученных от инструкций, которые формируют серверные курсоры, или для выполненных инструкций SELECT, содержащих предложение FOR BROWSE.

SQL_DESC_CATALOG_NAME

Имя базы данных. Можно использовать для результирующих наборов, полученных от инструкций, которые формируют серверные курсоры, или для выполненных инструкций SELECT, содержащих предложение FOR BROWSE.

SQL_DESC_LABEL

Можно использовать для всех результирующих наборов. Значение идентично значению поля SQL_DESC_NAME.

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

SQL_DESC_NAME

Можно использовать для всех результирующих наборов. Значение идентично значению поля SQL_DESC_LABEL.

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

SQL_DESC_SCHEMA_NAME

Имя владельца. Можно использовать для результирующих наборов, полученных от инструкций, которые формируют серверные курсоры, или для выполненных инструкций SELECT, содержащих предложение FOR BROWSE.

Доступно, только если имя владельца задано для столбца в инструкции SELECT.

SQL_DESC_TABLE_NAME

Можно использовать для результирующих наборов, полученных от инструкций, которые формируют серверные курсоры, или для выполненных инструкций SELECT, содержащих предложение FOR BROWSE.

SQL_DESC_UNNAMED

SQL_NAMED для всех столбцов в результирующем наборе, за исключением случаев, когда столбец является результатом выражения, не содержащего назначения метки в составе выражения. Если SQL_DESC_UNNAMED возвращает SQL_UNNAMED, все атрибуты ODBC идентификаторов столбцов содержат строки нулевой длины для этого столбца.

Драйвер ODBC для собственного клиента SQL Server использует инструкцию SET FMTONLY для сокращения издержек сервера при вызове SQLColAttribute для подготовленных, но невыполненных инструкций.

Для типов больших значений SQLColAttribute возвращает следующие значения.

Идентификатор поля

Описание изменения

SQL_DESC_DISPLAY_SIZE

Максимальное число символов, необходимых для отображения данных столбца. Для столбцов типов больших значений возвращается значение SQL_SS_LENGTH_UNLIMITED.

SQL_DESC_LENGTH

Возвращает в результирующем наборе фактическую длину столбца. Для столбцов типов больших значений возвращается значение SQL_SS_LENGTH_UNLIMITED.

SQL_DESC_OCTET_LENGTH

Возвращает максимальную длину столбца с типом больших значений. SQL_SS_LENGTH_UNLIMITED используется для указания неограниченного размера.

SQL_DESC_PRECISION

Возвращает значение SQL_SS_LENGTH_UNLIMITED для столбцов с типом больших значений.

SQL_DESC_TYPE

Возвращает SQL_VARCHAR, SQL_WVARCHAR и SQL_VARBINARY для типов больших значений.

SQL_DESC_TYPE_NAME

Возвращает типы данных varchar, varbinary и nvarchar для типов больших значений.

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

Следующие атрибуты столбцов являются расширениями, полученными с помощью драйвера ODBC для собственного клиента SQL Server. Драйвер ODBC для собственного клиента SQL Server возвращает все значения в параметре NumericAttrPtr. Возвращаются значения с типом SDWORD (signed long) за исключением SQL_CA_SS_COMPUTE_BYLIST, которое представляет собой указатель на массив WORD.

Идентификатор поля

Возвращаемое значение

SQL_CA_SS_COLUMN_HIDDEN*

Значение TRUE, если столбец является частью скрытого первичного ключа, созданного для поддержки инструкции Transact-SQL SELECT, содержащей FOR BROWSE.

SQL_CA_SS_COLUMN_ID

Порядковый номер результирующего столбца предложения COMPUTE в текущей инструкции Transact-SQL SELECT.

SQL_CA_SS_COLUMN_KEY*

Значение TRUE, если столбец является частью первичного ключа строки, а инструкция Transact-SQL SELECT содержит FOR BROWSE.

SQL_CA_SS_COLUMN_OP

Целочисленное значение, задающее статистический оператор, ответственный за значение в столбце предложения COMPUTE. Определения целочисленных значений находятся в файле sqlncli.h.

SQL_CA_SS_COLUMN_ORDER

Порядковый номер столбца в предложении ORDER BY инструкции ODBC или Transact-SQL SELECT.

SQL_CA_SS_COLUMN_SIZE

Максимальная длина в байтах, необходимая для привязки значения данных, полученных из столбца, к переменной SQL_C_BINARY.

SQL_CA_SS_COLUMN_SSTYPE

Собственный тип данных, хранящихся в столбце SQL Server. Определения значений типов находятся в файле sqlncli.h.

SQL_CA_SS_COLUMN_UTYPE

Базовый тип данных определяемого пользователем типа данных столбца SQL Server. Определения значений типов находятся в файле sqlncli.h.

SQL_CA_SS_COLUMN_VARYLEN

Значение TRUE, если длина данных столбца может быть разной, в противном случае FALSE.

SQL_CA_SS_COMPUTE_BYLIST

Указатель на массив WORD (unsigned short), задающий столбцы, используемые во фразе BY предложения COMPUTE. Если в предложении COMPUTE не задана фраза BY, возвращается указатель NULL.

Первый элемент массива содержит счетчик столбцов BY. Дополнительные элементы являются порядковыми номерами столбцов.

SQL_CA_SS_COMPUTE_ID

Идентификатор computeid строки, который является результатом предложения COMPUTE в текущей инструкции Transact-SQL SELECT.

SQL_CA_SS_NUM_COMPUTES

Количество предложений COMPUTE, заданных в текущей инструкции Transact-SQL SELECT.

SQL_CA_SS_NUM_ORDERS

Количество столбцов в предложении ORDER BY инструкции ODBC или Transact-SQL SELECT.

*   Доступно, если атрибут инструкции SQL_SOPT_SS_HIDDEN_COLUMNS имеет значение SQL_HC_ON.

В SQL Server 2005 представлены поля дескриптора, зависящие от драйвера, с помощью которых можно получить дополнительные сведения для определения имени коллекции схем XML, имени схемы и имени каталога, соответственно. При наличии в этих свойствах неалфавитных символов использование кавычек или escape-символа не требуется. Эти новые поля дескриптора приведены в следующей таблице.

Имя столбца

Тип

Описание

SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME

CharacterAttributePtr

Имя каталога, в котором определено имя коллекции схем XML. Если обнаружить имя каталога невозможно, то эта переменная содержит пустую строку.

Эти сведения возвращаются из поля записи SQL_DESC_SS_XML_SCHEMACOLLECTION_CATALOG_NAME IRD, предназначенного для чтения и записи.

SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAM E

CharacterAttributePtr

Имя схемы, в которой определено имя коллекции схем XML. Если обнаружить имя схемы невозможно, то эта переменная содержит пустую строку.

Эти сведения возвращаются из поля записи SQL_DESC_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME IRD, предназначенного для чтения и записи.

SQL_CA_SS_XML_SCHEMACOLLECTION_NAME

CharacterAttributePtr

Имя коллекции схем XML. Если обнаружить имя невозможно, то эта переменная содержит пустую строку.

Эти сведения возвращаются из поля записи SQL_DESC_SS_XML_SCHEMACOLLECTION_NAME IRD, предназначенного для чтения и записи.

Кроме того, в SQL Server 2005 представлены новые поля дескриптора для получения дополнительных сведений для столбца результирующего набора с определяемым пользователем типом данных (UDT) и для параметра UDT хранимой процедуры или параметризированного запроса. При наличии в этих свойствах неалфавитных символов использование кавычек или escape-символа не требуется. Эти новые поля дескриптора приведены в следующей таблице:

Имя столбца

Тип

Описание

SQL_CA_SS_UDT_CATALOG_NAME

CharacterAttributePtr

Имя каталога, содержащего определяемый пользователем тип.

SQL_CA_SS_UDT_SCHEMA_NAME

CharacterAttributePtr

Имя схемы, содержащей определяемый пользователем тип.

SQL_CA_SS_UDT_TYPE_NAME

CharacterAttributePtr

Имя определяемого пользователем типа.

SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME

CharacterAttributePtr

Полное имя сборки определяемого пользователем типа.

Идентификатор существующего дескриптора поля SQL_DESC_TYPE_NAME используется для указания имени определяемого пользователем типа данных. Поле SQL_DESC_TYPE для столбца определяемого пользователем типа содержит значение SQL_SS_UDT.

Поддержка SQLColAttribute для усовершенствованных функций даты-времени

Значения, возвращаемые типами даты-времени, см. в разделе «Сведения, возвращаемые в полях IRD» в Метаданные параметров и результатов.

Дополнительные сведения см. в разделе Улучшенная обработка даты и времени (ODBC).

Поддержка SQLColAttribute для больших определяемых пользователем типов CLR

SQLColAttribute поддерживает большие определяемые пользователем типы данных CLR. Дополнительные сведения см. в разделе Определяемые пользователем типы данных больших значений CLR (ODBC).

Поддержка SQLColAttribute для разреженных столбцов

SQLColAttribute запрашивает поле нового дескриптора строки (IRD), SQL_CA_SS_IS_COLUMN_SET, для определения, является ли столбец column_set.

Дополнительные сведения см. в разделе Поддержка разреженных столбцов (ODBC).

См. также

Основные понятия

Подробности реализации API-интерфейса ODBC

SQLSetStmtAttr

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

Функция SQLColAttribute