Métadonnées - Paramètres et ensembles de lignes
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Cet article fournit des informations sur le type et les membres de type suivants en rapport avec les améliorations de date et d’heure OLE DB.
Structure DBBINDING
ICommandWithParameters::GetParameterInfo
ICommandWithParameters::SetParameterInfo
IColumnsRowset::GetColumnsRowset
IColumnsInfo::GetColumnInfo
ICommandWithParameters::GetParameterInfo
Les informations suivantes sont retournées dans la structure DBPARAMINFO via prgParamInfo :
Type de paramètre | wType | ulParamSize | bPrecision | bScale | dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
Date | DBTYPE_DBDATE | 6 | 10 | 0 | Désactiver |
time | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Définissez |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Désactiver |
DATETIME | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Désactiver |
datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Définissez |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Définissez |
Notez que, dans certains cas, les plages de valeurs ne sont pas continues. Cela est dû à l'ajout d'une virgule décimale lorsque la précision fractionnaire est supérieure à zéro.
DBPARAMFLAGS_SS_ISVARIABLESCALE est valide uniquement en cas de connexion à un serveur exécutant SQL Server 2008 (10.0.x) et versions ultérieures. DBPARAMFLAGS_SS_ISVARIABLESCALE n’est jamais défini en cas de connexion à des serveurs de bas niveau.
ICommandWithParameters::SetParameterInfo et types de paramètre implicites
Les informations fournies dans la structure DBPARAMBINDINFO doivent respecter les conditions suivantes :
pwszDataSourceType (spécifique au fournisseur) |
pwszDataSourceType (OLE DB générique) |
ulParamSize | bScale |
---|---|---|---|
DBTYPE_DATE | 6 | Ignoré | |
Date | DBTYPE_DBDATE | 6 | Ignoré |
DBTYPE_DBTIME | 10 | Ignoré | |
time | DBTYPE_DBTIME2 | 10 | 0..7 |
smalldatetime | 16 | Ignoré | |
DATETIME | 16 | Ignoré | |
datetime2 ou DBTYPE_DBTIMESTAMP | DBTYPE_DBTIMESTAMP | 16 | 0..7 |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 0..7 |
Le paramètre bPrecision est ignoré.
« DBPARAMFLAGS_SS_ISVARIABLESCALE » est ignoré lors de l'envoi de données au serveur. Les applications peuvent forcer l’utilisation de types TDS (Tabular Data Stream) hérités en utilisant les noms de types spécifiques au fournisseur « datetime » et « smalldatetime ». En cas de connexion à des serveurs exécutant SQL Server 2008 (10.0.x) et versions ultérieures, le format « datetime2 » est utilisé et une conversion serveur implicite se produit si nécessaire, quand le nom de type est « datetime2 » ou « DBTYPE_DBTIMESTAMP ». bScale est ignoré si les noms de types spécifiques au fournisseur « DateTime » ou « smalldatetime » sont utilisés. Dans le cas contraire, les applications doivent s’assurer que bScale est correctement défini. Les applications mises à niveau à partir de MDAC et OLE DB Driver pour SQL Server à partir de SQL Server 2005 (9.x) qui utilisent « DBTYPE_DBTIMESTAMP » échouent si elles ne définissent pas bScale correctement. En cas de connexion à des instances de serveur antérieures à SQL Server 2008 (10.0.x), une valeur bScale autre que 0 ou 3 avec « DBTYPE_DBTIMESTAMP » est une erreur, et E_FAIL est retourné.
Quand ICommandWithParameters::SetParameterInfo n’est pas appelé, le fournisseur implique le type de serveur à partir du type de liaison, tel que spécifié dans IAccessor::CreateAccessor, comme suit :
Type de liaison | pwszDataSourceType (spécifique au fournisseur) |
---|---|
DBTYPE_DATE | datetime2(0) |
DBTYPE_DBDATE | Date |
DBTYPE_DBTIME | time(0) |
DBTYPE_DBTIME2 | time(7) |
DBTYPE_DBTIMESTAMP | datetime2(7) |
DBTYPE_DBTIMESTAMPOFFSET | datetimeoffset(7) |
IColumnsRowset::GetColumnsRowset
IColumnsRowset::GetColumnsRowset retourne les colonnes suivantes :
Type de colonne | DBCOLUMN_TYPE | DBCOLUM_COLUMNSIZE | DBCOLUMN_PRECISION | DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION | DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
Date | DBTYPE_DBDATE | 6 | 10 | 0 | Désactiver |
time | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Définissez |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Désactiver |
DATETIME | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Désactiver |
datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Définissez |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Définissez |
Dans DBCOLUMN_FLAGS, DBCOLUMNFLAGS_ISFIXEDLENGTH a toujours la valeur True pour les types date/heure et les indicateurs suivants sont toujours False :
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER
DBCOLUMNFLAGS_MAYDEFER
Les indicateurs restants (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE et DBCOLUMNFLAGS_WRITEUNKNOWN) peuvent être définis, en fonction de la manière dont la colonne est définie et de la requête réelle.
Un nouvel indicateur DBCOLUMNFLAGS_SS_ISVARIABLESCALE est fourni dans DBCOLUMN_FLAGS pour permettre à une application de déterminer le type de serveur de colonnes, où DBCOLUMN_TYPE représente DBTYPE_DBTIMESTAMP. DBCOLUMN_SCALE ou DBCOLUMN_DATETIMEPRECISION doit également être utilisé pour identifier le type de serveur.
DBCOLUMNFLAGS_SS_ISVARIABLESCALE est valide uniquement en cas de connexion à un serveur exécutant SQL Server 2008 (10.0.x) et versions ultérieures. DBCOLUMNFLAGS_SS_ISVARIABLESCALE est non défini en cas de connexion à des serveurs de bas niveau.
IColumnsInfo::GetColumnInfo
La structure DBCOLUMNINFO retourne les informations suivantes :
Type de paramètre | wType | ulColumnSize | bPrecision | bScale | dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
Date | DBTYPE_DBDATE | 6 | 10 | 0 | Désactiver |
time(1..7) | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Définissez |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Désactiver |
DATETIME | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Désactiver |
datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Définissez |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Définissez |
Dans dwFlags, DBCOLUMNFLAGS_ISFIXEDLENGTH a toujours la valeur True pour les types date/heure et les indicateurs suivants sont toujours False :
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER, MAYDEFER
Les indicateurs restants (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE et DBCOLUMNFLAGS_WRITEUNKNOWN) peuvent être définis.
Un nouvel indicateur, DBCOLUMNFLAGS_SS_ISVARIABLESCALE, est fourni dans dwFlags pour permettre à une application de déterminer le type de serveur des colonnes, où wType est DBTYPE_DBTIMESTAMP. bScale doit aussi être utilisé pour identifier le type de serveur.
Voir aussi
Prise en charge des types de données pour les améliorations de date et heure OLE DB