SQLColAttribute
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
С помощью SQLColAttribute можно получить атрибут столбца результирующих наборов для подготовленных или выполненных инструкций ODBC. Вызов SQLColAttribute для подготовленных инструкций приводит к циклического перебора SQL Server. Драйвер ODBC собственного клиента SQL Server получает данные столбца результирующих наборов в рамках выполнения инструкции, поэтому вызов SQLColAttribute после завершения SQLExecute или SQLExecDirect не включает в себя циклический обход сервера.
Примечание.
Атрибуты идентификатора столбца ODBC недоступны во всех результирующих наборах SQL Server.
Идентификатор поля | Description |
---|---|
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 | вычисление строки, которая является результатом предложения 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 (9.x) появились поля дескриптора для конкретного драйвера, чтобы указать дополнительные сведения, чтобы указать имя коллекции 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 (9.x) появились новые поля дескриптора для конкретного драйвера, чтобы предоставить дополнительные сведения для столбца определяемого пользователем типа (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 (определяемые пользователем UDT). Дополнительные сведения см. в разделе "Крупные определяемые пользователем типы CLR" (ODBC).
Поддержка SQLColAttribute для разреженных столбцов
SQLColAttribute запрашивает новое поле дескриптора строки реализации (IRD), SQL_CA_SS_IS_COLUMN_SET, чтобы определить, является ли столбец column_set столбцом.
Дополнительные сведения см. в разделе "Поддержка разреженных столбцов( ODBC)".
См. также
Функция SQLColAttribute
Подробные сведения о реализации API-интерфейсов ODBC
SQLSetStmtAttr