Métadonnées de paramètre et d'ensemble de lignes
Cette rubrique 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 pour SQL Server 2008.
Structure DBBINDING
ICommandWithParameters::GetParameterInfo
ICommandWithParameters::SetParameterInfo
IColumnsRowset::GetColumnsRowset
IColumnsInfo::GetColumnInfo
ICommandWithParameters::GetParameterInfo
Les informations suivantes sont retournées dans la structure DBPARAMINFO par le biais de prgParamInfo :
Type de paramètre |
wType |
ulParamSize |
bPrecision |
bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
date |
DBTYPE_DBDATE |
6 |
10 |
0 |
Clear |
time |
DBTYPE_DBTIME2 |
10 |
8, 10..16 |
0..7 |
Set |
smalldatetime |
DBTYPE_DBTIMESTAMP |
16 |
16 |
0 |
Clear |
datetime |
DBTYPE_DBTIMESTAMP |
16 |
23 |
3 |
Clear |
datetime2 |
DBTYPE_DBTIMESTAMP |
16 |
19,21..27 |
0..7 |
Set |
datetimeoffset |
DBTYPE_DBTIMESTAMPOFFSET |
20 |
26,28..34 |
0..7 |
Set |
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 uniquement valide en cas de connexion à un serveur SQL Server 2008. 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 |
Ignored |
date |
DBTYPE_DBDATE |
6 |
Ignored |
|
DBTYPE_DBTIME |
10 |
Ignored |
time |
DBTYPE_DBTIME2 |
10 |
0..7 |
smalldatetime |
|
16 |
Ignored |
datetime |
|
16 |
Ignored |
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 SQL Server 2008 (ou ultérieurs), le format « datetime2 » est utilisé et une conversion serveur implicite se produit, si nécessaire, lorsque 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. Sinon, les applications doivent s'assurer que bScale est défini correctement. Les applications mises à niveau à partir de MDAC et SQL Server Native Client à partir de SQL Server 2005 qui utilisent « DBTYPE_DBTIMESTAMP » échouent si elles ne définissent pas bScale correctement. En cas de connexion aux instances de serveur antérieures à SQL Server 2008, une valeur bScale autre que 0 ou 3 avec « DBTYPE_DBTIMESTAMP » est une erreur et E_FAIL est retourné.
Lorsque ICommandWithParameters::SetParameterInfo n'est pas appelé, le fournisseur implique le type de serveur à partir du type de liaison, comme spécifié dans IAccessor::CreateAccessor qui 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 |
Clear |
time |
DBTYPE_DBTIME2 |
10 |
8, 10..16 |
0..7 |
Set |
smalldatetime |
DBTYPE_DBTIMESTAMP |
16 |
16 |
0 |
Clear |
datetime |
DBTYPE_DBTIMESTAMP |
16 |
23 |
3 |
Clear |
datetime2 |
DBTYPE_DBTIMESTAMP |
16 |
19, 21..27 |
0..7 |
Set |
datetimeoffset |
DBTYPE_DBTIMESTAMPOFFSET |
20 |
26, 28..34 |
0..7 |
Set |
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 uniquement valide en cas de connexion à un serveur SQL Server 2008. 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 |
Clear |
time(1..7) |
DBTYPE_DBTIME2 |
10 |
8, 10..16 |
0..7 |
Set |
smalldatetime |
DBTYPE_DBTIMESTAMP |
16 |
16 |
0 |
Clear |
datetime |
DBTYPE_DBTIMESTAMP |
16 |
23 |
3 |
Clear |
datetime2 |
DBTYPE_DBTIMESTAMP |
16 |
19, 21..27 |
0..7 |
Set |
datetimeoffset |
DBTYPE_DBTIMESTAMPOFFSET |
20 |
26, 28..34 |
0..7 |
Set |
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 de colonnes, où wType représente DBTYPE_DBTIMESTAMP. bScale doit également être utilisé pour identifier le type de serveur.