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 (подписанный длинный), кроме SQL_CA_SS_COMPUTE_BYLIST, который является указателем на массив WORD.

Идентификатор поля Возвращенное значение
SQL_CA_SS_COLUMN_HIDDEN* Значение TRUE, если столбец, на который ссылается ссылка, является частью скрытого первичного ключа, созданного для поддержки инструкции SELECT Transact-SQL SELECT, содержащей FOR BROWSE.
SQL_CA_SS_COLUMN_ID Порядковое положение столбца результата предложения COMPUTE в текущей инструкции Transact-SQL SELECT.
SQL_CA_SS_COLUMN_KEY* ЗНАЧЕНИЕ TRUE, если столбец, на который ссылается ссылка, является частью первичного ключа строки, а инструкция SELECT Transact-SQL содержит 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 (без знака short), указывающий столбцы, используемые в фразе BY предложения COMPUTE. Если предложение COMPUTE не указывает фразу BY, возвращается указатель NULL.

Первый элемент массива содержит количество столбцов списка BY. Дополнительные элементы — порядковые номера столбцов.
SQL_CA_SS_COMPUTE_ID вычисление строки, которая является результатом предложения 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 для столбца типа UDT SQL_SS_UDT.

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

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

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

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

SQLColAttribute поддерживает большие определяемые пользователем типы СРЕДЫ CLR (определяемые пользователем UDT). Дополнительные сведения см. в разделе "Крупные определяемые пользователем типы CLR" (ODBC).

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

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

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

См. также

Функция SQLColAttribute
Подробные сведения о реализации API-интерфейсов ODBC
SQLSetStmtAttr