Partilhar via


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

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Base de dados SQL no Microsoft Fabric

Baixar driver OLE DB

Em conjuntos de linhas e como valores de parâmetros, o Driver OLE DB para SQL Server representa dados SQL Server utilizando os seguintes tipos de dados definidos pelo OLE DB, reportados 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
datetime2 DBTYPE_DBTIMESTAMP
decimal DBTYPE_NUMERIC
float DBTYPE_R8
image DBTYPE_BYTES
int DBTYPE_I4
dinheiro DBTYPE_CY
Nchar DBTYPE_WSTR
ntext DBTYPE_WSTR
numérico DBTYPE_NUMERIC
nvarchar DBTYPE_WSTR
real DBTYPE_R4
smalldatetime DBTYPE_DBTIMESTAMP
smallint DBTYPE_I2
dinheiro pequeno DBTYPE_CY
sql_variant DBTYPE_VARIANT, DBTYPE_SQLVARIANT
sysname DBTYPE_WSTR
texto DBTYPE_STR
timestamp DBTYPE_BYTES
tinyint DBTYPE_UI1
UDT DBTYPE_UDT
uniqueidentifier DBTYPE_GUID
Varbinary DBTYPE_BYTES
Varchar DBTYPE_STR
XML DBTYPE_XML

O Driver OLE DB para SQL Server suporta conversões de dados solicitadas pelo consumidor, conforme mostrado na ilustração.

Os objetos sql_variant podem armazenar dados de qualquer tipo de dado SQL Server, exceto texto, ntext, imagem, varchar(max), nvarchar(max), varbinary(max), xml, timestamp e tipos de execução da linguagem comum (CLR) do Microsoft .NET Framework definidos pelo utilizador. Uma instância de dados sql_variant também não pode ter sql_variant como seu tipo de dado base subjacente. Por exemplo, a coluna pode conter valores smallint para algumas linhas, valores float para outras linhas e valores char/nchar no restante.

Observação

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

Quando sql_variant dados são obtidos como DBTYPE_VARIANT, são colocados numa estrutura VARIANTE no buffer. Mas os subtipos na estrutura VARIANT podem não corresponder aos subtipos definidos no sql_variant tipo de dato. Os dados sql_variant devem então ser obtidos como DBTYPE_SQLVARIANT para que todos os subtipos coincidam.

DBTYPE_SQLVARIANT Tipo de Dados

Para suportar o tipo de dado sql_variant , o Driver OLE DB para SQL Server expõe um tipo de dado específico do fornecedor chamado DBTYPE_SQLVARIANT. Quando sql_variant dados são recolhidos como DBTYPE_SQLVARIANT, são armazenados numa estrutura SSVARIANT específica para cada fornecedor. A estrutura SSVARIANT contém todos os subtipos que correspondem aos subtipos do sql_variant tipo de dados.

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

Provider-Specific Propriedade SSPROP_ALLOWNATIVEVARIANT

Na obtenção de dados, pode especificar explicitamente que tipo de dado deve ser devolvido para uma coluna ou para um parâmetro. O IColumnsInfo também pode ser usado para obter a informação da coluna e usá-la para fazer a ligação. Quando o IColumnsInfo é usado para obter informação de colunas para fins de ligação, se a propriedade SSPROP_ALLOWNATIVEVARIANT sessão for FALSE (valor padrão), DBTYPE_VARIANT é devolvido para sql_variant colunas. Se SSPROP_ALLOWNATIVEVARIANT propriedade for FALSA, DBTYPE_SQLVARIANT não é suportado. Se SSPROP_ALLOWNATIVEVARIANT propriedade estiver definida como TRUE, o tipo de coluna é devolvido como DBTYPE_SQLVARIANT, caso em que o buffer manterá a estrutura SSVARIANT. Ao obter sql_variant dados como DBTYPE_SQLVARIANT, a propriedade da sessão SSPROP_ALLOWNATIVEVARIANT deve ser definida como TRUE.

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

DBTYPE_VARIANT aplica-se a todos os outros fornecedores OLE DB.

SSPROP_ALLOWNATIVEVARIANT

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

Propriedade Description
SSPROP_ALLOWNATIVEVARIANT Tipo: VT_BOOL

R/W: Ler/Escrever

Padrão: VARIANT_FALSE

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

VARIANT_TRUE: O tipo de coluna é devolvido como DBTYPE_SQLVARIANT caso em que o buffer manterá a estrutura SSVARIANT.

VARIANT_FALSE: O tipo de coluna é devolvido como DBTYPE_VARIANT e o buffer terá estrutura VARIANTE.

Ver também

Tipos de Dados (OLE DB)