Compartilhar via


Mapeamento de tipos de dados em conjuntos de linhas e parâmetros

Nos conjuntos de linhas e como valores de parâmetro, o provedor OLE DB do SQL Server Native Client representa dados do SQL Server usando os tipos de dados OLE DB definidos a seguir, relatados nas funções IColumnsInfo::GetColumnInfo e ICommandWithParameters::GetParameterInfo.

Tipo de dados do SQL Server

Tipo de dados OLE DB

bigint

DBTYPE_I8

binary

DBTYPE_BYTES

bit

DBTYPE_BOOL

char

DBTYPE_STR

datetime

DBTYPE_DBTIMESTAMP

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

UDT

DBTYPE_UDT

uniqueidentifier

DBTYPE_GUID

varbinary

DBTYPE_BYTES

varchar

DBTYPE_STR

XML

DBTYPE_XML

O provedor OLE DB do SQL Server Native Client dá suporte a conversões de dados solicitadas pelo consumidor, como mostrado na ilustração.

Os objetos sql_variant podem armazenar qualquer tipo de dados do SQL Server exceto text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp e os tipos de dados CLR definidos pelo usuário do Microsoft .NET Framework. Uma instância de dados sql_variant também não pode ter sql_variant como seu tipo de dados base subjacente. Por exemplo, a coluna pode conter valores smallint em algumas linhas, valores float em outras linhas e valores char/nchar no restante.

ObservaçãoObservação

O tipo de dados sql_variant é semelhante ao tipo de dados Variant no Microsoft Visual Basic® e ao DBTYPE_VARIANT, DBTYPE_SQLVARIANT no OLEDB.

Quando dados sql_variant são buscados como DBTYPE_VARIANT, eles são colocados em uma estrutura VARIANT no buffer. Mas os subtipos na estrutura VARIANT podem não ser mapeados para os subtipos definidos no tipo de dados sql_variant. Desse modo, os dados sql_variant devem ser buscados como DBTYPE_SQLVARIANT para que todos os subtipos sejam correspondidos.

Tipo de dados DBTYPE_SQLVARIANT

Para dar suporte ao tipo de dados sql_variant, o provedor OLE DB do SQL Server Native Client expõe um tipo de dados específico do provedor denominado DBTYPE_SQLVARIANT. Quando dados sql_variant são buscados como DBTYPE_SQLVARIANT, eles são armazenados em uma estrutura SSVARIANT específica do provedor. A estrutura SSVARIANT contém todos os subtipos que correspondem aos subtipos do tipo de dados sql_variant.

A propriedade de sessão SSPROP_ALLOWNATIVEVARIANT também deve ser definida como TRUE.

Propriedade específica de provedor SSPROP_ALLOWNATIVEVARIANT

Ao buscar dados, você pode especificar explicitamente que tipo de dados deveria ser retornado para uma coluna ou um parâmetro. IColumnsInfo também pode ser usado para obter informações sobre colunas e usá-las para fazer a associação. Quando IColumnsInfo é usado para obter informações sobre colunas para fins de associação, se a propriedade de sessão SSPROP_ALLOWNATIVEVARIANT for FALSE (valor padrão), DBTYPE_VARIANT será retornado para as colunas sql_variant. Se a propriedade SSPROP_ALLOWNATIVEVARIANT for FALSE, não haverá suporte para DBTYPE_SQLVARIANT. Se a propriedade SSPROP_ALLOWNATIVEVARIANT for definida como TRUE, o tipo de coluna será retornado como DBTYPE_SQLVARIANT; nesse caso o buffer armazenará a estrutura SSVARIANT. Quando você busca dados sql_variant como DBTYPE_SQLVARIANT, a propriedade de sessão SSPROP_ALLOWNATIVEVARIANT deverá ser definida como TRUE.

A propriedade SSPROP_ALLOWNATIVEVARIANT faz parte do conjunto de propriedades DBPROPSET_SQLSERVERSESSION específicas de provedor, sendo uma propriedade de sessão.

DBTYPE_VARIANT se aplica a todos os outros provedores OLE DB.

SSPROP_ALLOWNATIVEVARIANT

SSPROP_ALLOWNATIVEVARIANT é uma propriedade de sessão e faz parte do conjunto de propriedades DBPROPSET_SQLSERVERSESSION.

SSPROP_ALLOWNATIVEVARIANT

Tipo: VT_BOOL

Leitura/gravação: leitura/gravação

Padrão: VARIANT_FALSE

Descrição: Determina se os dados buscados são como DBTYPE_VARIANT ou DBTYPE_SQLVARIANT.

VARIANT_TRUE: o tipo de coluna é retornado como DBTYPE_SQLVARIANT e o buffer terá a estrutura SSVARIANT.

VARIANT_FALSE: o tipo de coluna é retornado como DBTYPE_VARIANT e o buffer terá a estrutura VARIANT.

Consulte também

Conceitos