Mapping dei tipi di dati in set di righe e parametri
Si applica a: SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Piattaforma di strumenti analitici (PDW)
Nei set di righe e come valori di parametro, OLE DB Driver per SQL Server rappresenta i dati di SQL Server usando i tipi di dati definiti da OLE DB seguenti, registrati nelle funzioni IColumnsInfo::GetColumnInfoe ICommandWithParameters::GetParameterInfo.
Tipo di dati di SQL Server | Tipo di dati 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 |
Immagine | 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 |
Testo | 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 per SQL Server 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 di dati Variant in Visual Basic e al DBTYPE_VARIANT, DBTYPE_SQLVARIANT in OLEDB.
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 driver OLE DB per SQL Server 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. È anche possibile servirsi di IColumnsInfo per ottenere le informazioni sulle colonne da usare per definire l'associazione. Quando IColumnsInfo viene usato 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.
Proprietà | Descrizione |
---|---|
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. |