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

В драйвере 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_LONGVARBINARY, SQL_LONGVARCHAR или SQL_WLONGVARCHAR (с использованием предложения WHERE) могут повлиять на полностью поддерживаемые множественные строки при подключении к экземпляру SQL Server 6.x или более поздней версии. При подключении к экземпляру 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 и ранее.

Типы данных LONG

Параметры data-at-execution ограничены для обоих типов данных 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.

См. также

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