Mappage de type de données SQL Server Native Client dans les ensembles de lignes et les paramètres
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Dans les ensembles de lignes et en tant que valeurs de paramètre, le fournisseur OLE DB SQL Server Native Client représente les données SQL Server à l’aide des types de données définis par OLE DB suivants, signalés dans les fonctions IColumnsInfo ::GetColumnInfo et ICommandWithParameters ::GetParameterInfo.
Type de données SQL Server | Type de données 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 |
Le fournisseur OLE DB SQL Server Native Client prend en charge les conversions de données demandées par le consommateur, comme indiqué dans l’illustration.
Les objets sql_variant peuvent contenir des données de n’importe quel type de données SQL Server, sauf text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp et les types CLR (Common Language Runtime) du Microsoft .NET Framework définis par l’utilisateur. sql_variant ne peut pas être le type de données de base sous-jacent d'une instance de données sql_variant. Par exemple, la colonne peut contenir des valeurs smallint pour certaines lignes, des valeurs float pour d’autres lignes et des valeurs char/nchar dans le reste.
Remarque
Le type de données sql_variant est similaire au type de données Variant en Visual Basic et au DBTYPE_VARIANT, DBTYPE_SQLVARIANT dans OLEDB.
Quand des données sql_variant sont extraites en tant que DBTYPE_VARIANT, elles sont placées dans une structure VARIANT dans la mémoire tampon. Cependant, les sous-types dans la structure VARIANT peuvent ne pas être mappés aux sous-types définis dans le type de données sql_variant. Les données sql_variant doivent ensuite être extraites en tant que DBTYPE_SQLVARIANT pour que tous les sous-types correspondent.
Type de données DBTYPE_SQLVARIANT
Pour prendre en charge le type de données sql_variant , le fournisseur OLE DB SQL Server Native Client expose un type de données spécifique au fournisseur appelé DBTYPE_SQLVARIANT. Quand des données sql_variant sont extraites en tant que DBTYPE_SQLVARIANT, elles sont stockées dans une structure SSVARIANT spécifique au fournisseur. La structure SSVARIANT contient tous les sous-types qui correspondent aux sous-types du type de données sql_variant.
La propriété de session SSPROP_ALLOWNATIVEVARIANT doit également avoir la valeur TRUE.
Propriété SSPROP_ALLOWNATIVEVARIANT spécifique au fournisseur
Pour extraire des données, vous pouvez spécifier explicitement le type de données à retourner pour une colonne ou un paramètre. IColumnsInfo permet également d’obtenir les informations sur les colonnes et d’utiliser ces informations pour effectuer la liaison. Quand IColumnsInfo est utilisé pour obtenir des informations sur les colonnes en vue d’effectuer une liaison, si la propriété de session SSPROP_ALLOWNATIVEVARIANT a la valeur FALSE (valeur par défaut), DBTYPE_VARIANT est retourné pour les colonnes sql_variant. Si la propriété SSPROP_ALLOWNATIVEVARIANT a la valeur FALSE, DBTYPE_SQLVARIANT n'est pas pris en charge. Si la propriété SSPROP_ALLOWNATIVEVARIANT a la valeur TRUE, le type de colonne est retourné en tant que DBTYPE_SQLVARIANT, auquel cas la mémoire tampon contiendra la structure SSVARIANT. Pour extraire des données sql_variant en tant que DBTYPE_SQLVARIANT, la propriété de session SSPROP_ALLOWNATIVEVARIANT doit être définie sur TRUE.
La propriété SSPROP_ALLOWNATIVEVARIANT est une propriété de session et fait partie du jeu de propriétés DBPROPSET_SQLSERVERSESSION spécifique au fournisseur.
DBTYPE_VARIANT s'applique à tous les autres fournisseurs OLE DB.
SSPROP_ALLOWNATIVEVARIANT
SSPROP_ALLOWNATIVEVARIANT est une propriété de session et fait partie du jeu de propriétés DBPROPSET_SQLSERVERSESSION.
ID de propriété | Description |
---|---|
SSPROP_ALLOWNATIVEVARIANT | Type : VT_BOOL Lecture/écriture : lecture/écriture Valeur par défaut : VARIANT_FALSE Description : détermine si les données sont extraites en tant que DBTYPE_VARIANT ou DBTYPE_SQLVARIANT. VARIANT_TRUE : le type de colonne est retourné en tant que DBTYPE_SQLVARIANT, auquel cas la mémoire tampon contient la structure SSVARIANT. VARIANT_FALSE : le type de colonne est retourné en tant que DBTYPE_VARIANT et la mémoire tampon a la structure VARIANT. |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : pendant toute l’année 2024, nous allons éliminer progressivement Problèmes GitHub comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, voir :Soumettre et afficher des commentaires pour