Condividi tramite


Mapping dei tipi di dati in set di righe e parametri

Nei set di righe e come valori di parametro, il provider OLE DB di SQL Server Native Client rappresenta i dati di SQL Server utilizzando i tipi di dati definiti da OLE DB seguenti, registrati nelle funzioni IColumnsInfo::GetColumnInfo e ICommandWithParameters::GetParameterInfo.

Tipo di dati SQL Server

Tipo di dati 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

UDT

DBTYPE_UDT

uniqueidentifier

DBTYPE_GUID

varbinary

DBTYPE_BYTES

varchar

DBTYPE_STR

XML

DBTYPE_XML

Il provider OLE DB di SQL Server Native Client supporta le conversioni di dati richieste dal consumer, come mostrato nell'illustrazione.

Gli oggetti sql_variant possono contenere dati di qualsiasi tipo di dati di SQL Server, ad eccezione di text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp e dei tipi CLR definiti dall'utente di Microsoft .NET Framework. Per un'istanza di dati sql_variant, inoltre, il tipo di dati di base sottostante non può corrispondere a sql_variant. La colonna può ad esempio contenere valori smallint per alcune righe, valori float per altre righe e valori char/nchar per la parte restante delle righe.

Nota

Il tipo di dati sql_variant è simile al tipo Variant di Microsoft Visual Basic® e ai tipi DBTYPE_VARIANT e DBTYPE_SQLVARIANT di OLE DB.

Quando i dati sql_variant vengono recuperati come DBTYPE_VARIANT, vengono inseriti in una struttura VARIANT nel buffer. Tuttavia i sottotipi presenti nella struttura VARIANT non possono eseguire il mapping a sottotipi definiti nel tipo di dati sql_variant. Perché tutti i sottotipi siano corrispondenti, è necessario che i dati sql_variant vengano quindi recuperati come DBTYPE_SQLVARIANT.

Tipo di dati DBTYPE_SQLVARIANT

Per supportare il tipo di dati sql_variant, il provider OLE DB di SQL Server Native Client espone un tipo di dati specifico del provider denominato DBTYPE_SQLVARIANT. Quando i dati sql_variant vengono recuperati come DBTYPE_SQLVARIANT, vengono archiviati in una struttura SSVARIANT specifica del provider. La struttura SSVARIANT contiene tutti i sottotipi che corrispondono ai sottotipi del tipo di dati sql_variant.

La proprietà di sessione SSPROP_ALLOWNATIVEVARIANT deve essere inoltre impostata su TRUE.

Proprietà SSPROP_ALLOWNATIVEVARIANT specifica del provider

Durante il recupero dei dati è possibile specificare in modo esplicito il tipo di dati da restituire per una colonna o un parametro. È inoltre possibile servirsi di IColumnsInfo per ottenere le informazioni sulle colonne da utilizzare per definire l'associazione. Quando IColumnsInfo viene utilizzato a tale scopo, se la proprietà di sessione SSPROP_ALLOWNATIVEVARIANT è FALSE (valore predefinito), viene restituito DBTYPE_VARIANT per le colonne sql_variant. Se la proprietà SSPROP_ALLOWNATIVEVARIANT è FALSE, DBTYPE_SQLVARIANT non è supportato. Se la proprietà SSPROP_ALLOWNATIVEVARIANT è impostata su TRUE, il tipo di colonna viene restituito come DBTYPE_SQLVARIANT, nel qual caso il buffer conterrà la struttura SSVARIANT. Durante il recupero dei dati sql_variant come DBTYPE_SQLVARIANT la proprietà di sessione SSPROP_ALLOWNATIVEVARIANT deve essere impostata su TRUE.

La proprietà SSPROP_ALLOWNATIVEVARIANT fa parte del set di proprietà DBPROPSET_SQLSERVERSESSION specifico del provider ed è una proprietà di sessione.

La proprietà DBTYPE_VARIANT si applica a tutti gli altri provider OLE DB.

SSPROP_ALLOWNATIVEVARIANT

La proprietà SSPROP_ALLOWNATIVEVARIANT è una proprietà di sessione e fa parte del set di proprietà DBPROPSET_SQLSERVERSESSION.

SSPROP_ALLOWNATIVEVARIANT

Tipo: VT_BOOL

L/S: Lettura/Scrittura

Impostazione predefinita: VARIANT_FALSE

Descrizione: determina se i dati recuperati appartengono alla categoria DBTYPE_VARIANT o DBTYPE_SQLVARIANT.

VARIANT_TRUE: il tipo di colonna viene restituito come DBTYPE_SQLVARIANT e in tal caso il buffer conserva la struttura SSVARIANT.

VARIANT_FALSE: il tipo di colonna viene restituito come DBTYPE_VARIANT e il buffer presenta la struttura VARIANT.

Vedere anche

Concetti