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

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

Скачать драйвер OLE DB

В наборах строк и в качестве значений параметров драйвер 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_DBTIMESTAMP
десятичное DBTYPE_NUMERIC
float DBTYPE_R8
Изображение 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
UDT DBTYPE_UDT
uniqueidentifier DBTYPE_GUID
varbinary DBTYPE_BYTES
varchar DBTYPE_STR
XML DBTYPE_XML

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

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

Примечание.

Тип данных sql_variant аналогичен типу данных Variant в 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.

Свойство Description
Свойство SSPROP_ALLOWNATIVEVARIANT Тип: VT_BOOL

R/W: чтение и запись

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

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

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

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

См. также

Типы данных (OLE DB)