Использование типов данных

В драйвере ODBC для собственного клиента SQL Server и в SQL Server типы данных используются следующим образом.

Тип данных

Ограничение

Литералы даты

Литералы даты при помещении в столбец SQL_TYPE_TIMESTAMP (типы данных SQL Server datetime или smalldatetime) имеют значение времени 12:00:00.000.

money и smallmoney

Имеют значение только целочисленные части типов данных money и smallmoney. Если десятичная часть данных SQL money усекается в процессе преобразования данных, то драйвер ODBC для собственного клиента SQL Server возвращает предупреждение, а не ошибку.

SQL_BINARY (допускающий значения NULL)

Если столбец SQL_BINARY допускает значения NULL, при подключении к экземпляру SQL Server версии 6.0 или более ранней данные, помещенные в источник данных, не заполняются нулями. При получении данных из таких столбцов драйвер ODBC для собственного клиента SQL Server заполняет их нулями справа. Однако данные, которые создаются в операциях, выполняемых SQL Server (например объединении), не имеют такого заполнения.

Также при помещении данных в такие столбцы в экземпляре SQL Server версии 6.0 или более ранней SQL Server усекает данные справа, если их длина слишком большая, чтобы поместиться в столбец.

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

Драйвер ODBC собственного клиента SQL Server поддерживает соединение с версией SQL Server 6.5 и ранее.

SQL_CHAR (усечение)

Если при подключении к экземпляру SQL Server 6.0 или более ранней версии данные помещаются в столбец SQL_CHAR, SQL Server усекает их справа, не выдавая предупреждения, если их длина слишком большая, чтобы поместиться в столбец.

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

Драйвер ODBC собственного клиента SQL Server поддерживает соединение с версией SQL Server 6.5 и ранее.

SQL_CHAR (допускающий значения NULL)

Если столбец SQL_CHAR допускает значения NULL, при подключении к экземпляру SQL Server версии 6.0 или более ранней данные, данные, сохраненные в источник данных, не дополняются пробелами. При получении данных из таких столбцов драйвер ODBC для собственного клиента SQL Server заполняет их пустыми полями справа. Однако данные, которые создаются в операциях, выполняемых SQL Server (например объединении), не имеют такого заполнения.

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

Драйвер ODBC собственного клиента SQL Server поддерживает соединение с версией SQL Server 6.5 и ранее.

SQL_LONGVARBINARY, SQL_LONGVARCHAR, SQL_WLONGVARCHAR

При подключении к экземпляру SQL Server 6.x или более поздней версии полностью поддерживаются обновления столбцов с типами данных SQL_LONGVARBINARY, SQL_LONGVARCHAR или SQL_WLONGVARCHAR (с использованием предложения WHERE), затрагивающие несколько строк. При подключении к экземпляру SQL Server 4.2x возвращается ошибка «Частичная вставка или обновление. Вставка или обновление столбца text или image не завершено», если обновление затрагивает более одной строки.

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

Драйвер ODBC собственного клиента SQL Server поддерживает соединение с версией SQL Server 6.5 и ранее.

Параметры строковых функций

Параметры string_exp строковых функций должны иметь тип данных SQL_CHAR или SQL_VARCHAR. Типы данных SQL_LONG_VARCHAR не поддерживаются в строковых функциях. Параметр count должен быть меньше или равен 8000, так как типы данных SQL_CHAR и SQL_VARCHAR ограничены максимальной длиной в 8000 символов.

Литералы времени

Литералы времени при сохранении в столбец SQL_TIMESTAMP (типы данных SQL Server datetime или smalldatetime) имеют значение даты «1 января 1900».

timestamp

Вручную в столбец timestamp может быть вставлено только значение NULL. Однако, так как столбцы timestamp автоматически обновляются SQL Server, то значение NULL перезаписывается.

tinyint

Тип данных SQL Server tinyint является беззнаковым. Столбец tinyint по умолчанию привязывается к переменной типа данных SQL_C_UTINYINT.

Псевдонимы типов данных

При подключении к экземпляру SQL Server 4.2x драйвер ODBC добавляет значение NULL в определение столбца, в котором явно не указана допустимость значений NULL. Поэтому допустимость значений NULL, помещенная в определение псевдонима типа данных, не учитывается.

При подключении к экземпляру SQL Server 4.2x столбцы с псевдонимом типа данных, который имеет базовый тип данных char или binary и для которого не декларирована допустимость значений NULL, создаются с типом данных varchar или varbinary. Функции SQLColAttribute, SQLColumns и SQLDescribeCol возвращают SQL_VARCHAR и SQL_VARBINARY в качестве типа данных для этих столбцов. Данные, полученные из этих столбцов, не заполнены.

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

Драйвер ODBC собственного клиента SQL Server поддерживает соединение с версией SQL Server 6.5 и ранее.

Типы данных большой длины

Параметры с данными времени выполнения ограничены для обоих типов данных SQL_LONGVARBINARY и SQL_LONGVARCHAR.

Типы больших значений

Драйвер ODBC для собственного клиента SQL Server предоставит типы varchar(max), varbinary(max) и nvarchar(max) в виде SQL_VARCHAR, SQL_VARBINARY и SQL_WVARCHAR (соответственно) в API-интерфейсах, которые принимают или возвращают типы данных ODBC SQL.

Определяемый пользователем тип

Столбцы определяемого пользователем типа преобразуются в тип данных SQL_SS_UDT. Если столбец определяемого пользователем типа явно сопоставлен с другим типом в инструкции SQL с помощью методов ToString() или ToXMLString() определяемого пользователем типа или с помощью функций CAST/CONVERT, то тип столбца в результирующем наборе будет отражать реальный тип, к которому столбец был преобразован.

Драйвер ODBC для собственного клиента SQL Server может только привязать столбец определяемого пользователем типа как двоичный тип. SQL Server поддерживает преобразование только между типами данных SQL_SS_UDT и SQL_C_BINARY.

XML

SQL Server автоматически преобразует XML в текст Юникода. Тип XML преобразуется в SQL_SS_XML.

См. также

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

Обработка результатов (ODBC)