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


SQLBindCol

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Как правило, рассмотрите последствия использования SQLBindCol для преобразования данных. Преобразования привязки являются клиентскими процессами, поэтому, например, получение значения с плавающей запятой, связанного с символьным столбцом, вынуждает драйвер выполнить локальное преобразование «плавающая запятая в символ» при выборке строки. Функцию Transact-SQL CONVERT можно использовать для размещения затрат на преобразование данных на сервере.

Экземпляр SQL Server может возвращать несколько наборов результирующих строк при выполнении одной инструкции. Каждый результирующий набор должен быть привязан отдельно. Дополнительные сведения о привязке для нескольких результирующих наборов см. в статье SQLMoreResults.

Разработчик может привязать столбцы к типам данных C, зависящим от SQL Server, с помощью значения TargetType SQL_C_BINARY. Столбцы, привязанные к типам SQL Server, не переносятся. Определенные типы данных ODBC для SQL Server соответствуют определениям типов для библиотеки СУБД и разработчикам библиотеки СУБД, переносимых приложений, может потребоваться воспользоваться этой функцией.

Усечение данных отчетов — это дорогостоящий процесс для драйвера ODBC собственного клиента SQL Server. Усечения можно избежать с помощью гарантии того, что все буферы связанных данных достаточно широки для возвращения данных. Для символьных данных ширина должна включать пространство для признака конца строки при использовании поведения драйвера по умолчанию для завершения строки. Например, привязка столбца SQL Server char(5) к массиву из пяти символов приводит к усечению каждого значения. Привязка одинакового столбца к массиву из шести символов позволит избежать усечения путем предоставления элемента символа для хранения признака конца NULL. SQLGetData можно использовать для эффективного извлечения длинных символов и двоичных данных без усечения.

Для типов данных больших значений, если предоставленный пользователем буфер недостаточно велик для хранения всего значения столбца, возвращается SQL_SUCCESS_WITH_INFO и строковые данные; Выдается предупреждение об усечении правого усечения. Аргумент StrLen_or_IndPtr будет содержать количество символов или байтов, хранящихся в буфере.

Поддержка функцией SQLBindCol улучшенных возможностей работы с данными в формате даты-времени

Значения столбцов результатов типов даты и времени преобразуются, как описано в разделе "Преобразования из SQL в C". Обратите внимание, что для получения столбцов time и datetimeoffset в качестве соответствующих структур (SQL_SS_TIME2_STRUCT и SQL_SS_TIMESTAMPOFFSET_STRUCT), TargetType необходимо указать как SQL_C_DEFAULT или SQL_C_BINARY.

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

Поддержка функцией SQLBindCol определяемых пользователем типов больших данных CLR

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

См. также

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