Compartir a través de


Parámetros y metadatos de conjuntos de filas

En este tema se proporciona información acerca de los siguientes tipos y miembros de tipo relacionados con las mejoras de fecha y hora de OLE DB.

  • Estructura DBBINDING

  • ICommandWithParameters::GetParameterInfo

  • ICommandWithParameters::SetParameterInfo

  • IColumnsRowset::GetColumnsRowset

  • IColumnsInfo::GetColumnInfo

ICommandWithParameters::GetParameterInfo

La siguiente información se devuelve en la estructura DBPARAMINFO a través de prgParamInfo:

Tipo de parámetro

wType

ulParamSize

bPrecision

bScale

dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE

date

DBTYPE_DBDATE

6

10

0

Desactivado

time

DBTYPE_DBTIME2

10

8, 10..16

0..7

Establecido

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

Desactivado

datetime

DBTYPE_DBTIMESTAMP

16

23

3

Desactivado

datetime2

DBTYPE_DBTIMESTAMP

16

19,21..27

0..7

Establecido

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

26,28..34

0..7

Establecido

Observe que en algunos casos los intervalos de valores no son continuos. Esto se debe a la adición de un separador decimal cuando la precisión fraccionaria es mayor que cero.

DBPARAMFLAGS_SS_ISVARIABLESCALE es únicamente válido cuando se conecta a un servidor SQL Server 2008 o posterior. DBPARAMFLAGS_SS_ISVARIABLESCALE no se establece nunca cuando se conecta a servidores de nivel inferior.

ICommandWithParameters::SetParameterInfo y tipos de parámetro implícitos

La información que se proporciona en la estructura de DBPARAMBINDINFO debe cumplir lo siguiente:

pwszDataSourceType

(depende del proveedor)

pwszDataSourceType

(OLE DB genérico)

ulParamSize

bScale

 

DBTYPE_DATE

6

No se tiene en cuenta

date

DBTYPE_DBDATE

6

Omitido

 

DBTYPE_DBTIME

10

No se tiene en cuenta

time

DBTYPE_DBTIME2

10

0..7

smalldatetime

 

16

No se tiene en cuenta

datetime

 

16

No se tiene en cuenta

datetime2 o DBTYPE_DBTIMESTAMP

DBTYPE_DBTIMESTAMP

16

0..7

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

0..7

El parámetro bPrecision no se tiene en cuenta.

No se tiene en cuenta "DBPARAMFLAGS_SS_ISVARIABLESCALE" al enviar los datos al servidor. Las aplicaciones pueden exigir el uso de tipos heredados de flujo de datos tabular (TDS) mediante los nombres de tipo específico del proveedor "datetime" y "smalldatetime". Cuando se conecta a los servidores SQL Server 2008 (o posterior), se usará el formato "datetime2" y, si es necesario, se producirá una conversión implícita de servidor cuando el nombre de tipo es "datetime2" o "DBTYPE_DBTIMESTAMP". bScale se pasa por alto si se usan los nombres de tipo específico del proveedor "datetime" o "smalldatetime". De lo contrario, las aplicaciones deben asegurarse de que bScale se ha establecido correctamente. Las aplicaciones actualizadas de MDAC y SQL Server Native Client de SQL Server 2005 que usan "DBTYPE_DBTIMESTAMP" generarán un error si no establecen bScale correctamente. Cuando esté conectado a las instancias de servidor anteriores a SQL Server 2008, un valor bScale que no sea 0 ó 3 con "DBTYPE_DBTIMESTAMP" es un error y se devolverá E_FAIL.

Cuando no se llama a ICommandWithParameters::SetParameterInfo, el proveedor implica al tipo de servidor a partir del tipo de enlace como se especifica en IAccessor::CreateAccessor de la manera siguiente:

Tipo de enlace

pwszDataSourceType

(depende del proveedor)

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 devuelve las columnas siguientes:

Tipo de columna

DBCOLUMN_TYPE

DBCOLUM_COLUMNSIZE

DBCOLUMN_PRECISION

DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION

DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE

date

DBTYPE_DBDATE

6

10

0

Desactivado

time

DBTYPE_DBTIME2

10

8, 10..16

0..7

Establecido

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

Desactivado

datetime

DBTYPE_DBTIMESTAMP

16

23

3

Desactivado

datetime2

DBTYPE_DBTIMESTAMP

16

19, 21..27

0..7

Establecido

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

26, 28..34

0..7

Establecido

DBCOLUMN_FLAGS, DBCOLUMNFLAGS_ISFIXEDLENGTH es siempre TRUE para los tipos de fecha y hora, y las marcas siguientes son siempre FALSE:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER

  • DBCOLUMNFLAGS_MAYDEFER

Se pueden establecer las marcas restantes (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE y DBCOLUMNFLAGS_WRITEUNKNOWN), dependiendo de cómo se defina la columna y la consulta real.

Se proporciona una nueva marca DBCOLUMNFLAGS_SS_ISVARIABLESCALE en DBCOLUMN_FLAGS para permitir que una aplicación determine el tipo de servidor de columnas, donde DBCOLUMN_TYPE es DBTYPE_DBTIMESTAMP. DBCOLUMN_SCALE o DBCOLUMN_DATETIMEPRECISION también se debe usar para identificar el tipo de servidor.

DBCOLUMNFLAGS_SS_ISVARIABLESCALE es únicamente válido cuando se conecta a un servidor SQL Server 2008 o posterior. DBCOLUMNFLAGS_SS_ISVARIABLESCALE no está definido cuando se conecta a servidores de nivel inferior.

IColumnsInfo::GetColumnInfo

La estructura DBCOLUMNINFO devuelve la información siguiente:

Tipo de parámetro

wType

ulColumnSize

bPrecision

bScale

dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE

date

DBTYPE_DBDATE

6

10

0

Desactivado

time(1..7)

DBTYPE_DBTIME2

10

8, 10..16

0..7

Establecido

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

Desactivado

datetime

DBTYPE_DBTIMESTAMP

16

23

3

Desactivado

datetime2

DBTYPE_DBTIMESTAMP

16

19, 21..27

0..7

Establecido

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

26, 28..34

0..7

Establecido

En dwFlags DBCOLUMNFLAGS_ISFIXEDLENGTH es siempre TRUE para los tipos de fecha y hora, y las marcas siguientes son siempre FALSE:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER, MAYDEFER

Se pueden establecer las marcas restantes (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE y DBCOLUMNFLAGS_WRITEUNKNOWN).

Se proporciona una nueva marca DBCOLUMNFLAGS_SS_ISVARIABLESCALE en dwFlags para permitir que una aplicación determine el tipo de servidor de columnas, donde wType es DBTYPE_DBTIMESTAMP. bScale también se deben usar para identificar el tipo de servidor.

Vea también

Conceptos