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


Сопоставление типов данных в наборах строк и параметрах

В наборах строк и в качестве значений параметров поставщик OLE DB для собственного клиента SQL Server представляет данные SQL Server с помощью следующих определенных типов данных OLE DB, сообщаемых в функциях IColumnsInfo::GetColumnInfo и ICommandWithParameters::GetParameterInfo.

Тип данных SQL Server

Тип данных OLE DB

bigint

DBTYPE_I8

binary

DBTYPE_BYTES

bit

DBTYPE_BOOL

char

DBTYPE_STR

datetime

DBTYPE_DBTIMESTAMP

datetime2

DBTYPE_DBTIME2

decimal

DBTYPE_NUMERIC

float

DBTYPE_R8

image

DBTYPE_BYTES

int

DBTYPE_I4

money

DBTYPE_CY

nchar

DBTYPE_WSTR

ntext

DBTYPE_WSTR

numeric

DBTYPE_NUMERIC

nvarchar

DBTYPE_WSTR

real

DBTYPE_R4

smalldatetime

DBTYPE_DBTIMESTAMP

smallint

DBTYPE_I2

smallmoney

DBTYPE_CY

sql_variant

DBTYPE_VARIANT, DBTYPE_SQLVARIANT

sysname

DBTYPE_WSTR

text

DBTYPE_STR

timestamp

DBTYPE_BYTES

tinyint

DBTYPE_UI1

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

DBTYPE_UDT

uniqueidentifier

DBTYPE_GUID

varbinary

DBTYPE_BYTES

varchar

DBTYPE_STR

XML

DBTYPE_XML

Поставщик OLE DB для собственного клиента SQL Server поддерживает запрашиваемые потребителем преобразования данных, как показано на иллюстрации.

Объекты sql_variant могут хранить данные SQL Server любого типа, кроме text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp и определяемых пользователем типов данных CLR платформы Microsoft .NET Framework. Экземпляр данных sql_variant не может также иметь sql_variant в качестве базового типа данных. Например, столбец может содержать значения smallint в некоторых строках, значения float в других строках и значения char/nchar в остальных.

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

Тип данных sql_variant аналогичен типу данных Variant в Microsoft Visual Basic® и типу данных DBTYPE_VARIANT, DBTYPE_SQLVARIANT в OLEDB.

Если данные sql_variant получены как DBTYPE_VARIANT, они размещаются в структуре VARIANT в буфере. Но подтипы в структуре VARIANT могут не соответствовать подтипам, определенным в типе данных sql_variant. Затем данные sql_variant должны быть выбраны как DBTYPE_SQLVARIANT, чтобы сопоставить все подтипы.

Тип данных DBTYPE_SQLVARIANT

Для поддержки типа данных sql_variant поставщик OLE DB для собственного клиента SQL Server предоставляет специфический для поставщика тип данных, называемый DBTYPE_SQLVARIANT. Если данные sql_variant получены как DBTYPE_SQLVARIANT, они размещаются в специфической для поставщика структуре SSVARIANT. Структура SSVARIANT содержит все подтипы, сопоставленные с подтипами типа данных sql_variant.

Свойство сеанса SSPROP_ALLOWNATIVEVARIANT должно быть равно true.

Специфическое для поставщика свойство SSPROP_ALLOWNATIVEVARIANT

При выборке данных можно явно указать разновидность типа данных, которые должны быть возвращены для столбца или для параметра. Интерфейс IColumnsInfo может также использоваться, чтобы получить сведения о столбце и использовать их для привязки. Если интерфейс IColumnsInfo используется, чтобы получить сведения о столбце для привязки, а свойство сеанса SSPROP_ALLOWNATIVEVARIANT имеет значение FALSE (по умолчанию), для столбцов sql_variant возвращается DBTYPE_VARIANT. Если свойство SSPROP_ALLOWNATIVEVARIANT имеет значение FALSE, DBTYPE_SQLVARIANT не поддерживается. Если свойство SSPROP_ALLOWNATIVEVARIANT имеет значение TRUE, возвращается тип столбца DBTYPE_SQLVARIANT. В этом случае в буфере сохраняется структура SSVARIANT. При выборке данных sql_variant как данных типа DBTYPE_SQLVARIANT свойство сеанса SSPROP_ALLOWNATIVEVARIANT должно быть равно true.

Свойство SSPROP_ALLOWNATIVEVARIANT является частью специфического для поставщика набора свойств DBPROPSET_SQLSERVERSESSION и свойством сеанса.

DBTYPE_VARIANT применяется ко всем другим поставщикам OLE DB.

SSPROP_ALLOWNATIVEVARIANT

Свойство SSPROP_ALLOWNATIVEVARIANT является свойством сеанса и частью набора свойств DBPROPSET_SQLSERVERSESSION.

Свойство SSPROP_ALLOWNATIVEVARIANT

Тип: VT_BOOL

Чтение-запись: чтение и запись

По умолчанию: VARIANT_FALSE

Описание: Определяет, имеют ли данные, полученные в результате выборки, тип DBTYPE_VARIANT или DBTYPE_SQLVARIANT.

VARIANT_TRUE: Возвращается тип столбца DBTYPE_SQLVARIANT. В этом случае в буфере сохраняется структура SSVARIANT.

VARIANT_FALSE: Возвращается столбец типа DBTYPE_VARIANT и в буфере сохраняется структура VARIANT.

См. также

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