Partager via


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.

Voir aussi

Concepts