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

Borrar

time

DBTYPE_DBTIME2

10

8, 10..16

0..7

Set

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

Borrar

datetime

DBTYPE_DBTIMESTAMP

16

23

3

Borrar

datetime2

DBTYPE_DBTIMESTAMP

16

19,21..27

0..7

Set

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 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

No se tiene en cuenta

 

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 TDS mediante los nombres de tipo específico del proveedor "datetime" y "smalldatetime". Cuando se conecta a los servidores de 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 sea "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

Borrar

time

DBTYPE_DBTIME2

10

8, 10..16

0..7

Set

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

Borrar

datetime

DBTYPE_DBTIMESTAMP

16

23

3

Borrar

datetime2

DBTYPE_DBTIMESTAMP

16

19, 21..27

0..7

Set

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

Borrar

time(1..7)

DBTYPE_DBTIME2

10

8, 10..16

0..7

Set

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

Borrar

datetime

DBTYPE_DBTIMESTAMP

16

23

3

Borrar

datetime2

DBTYPE_DBTIMESTAMP

16

19, 21..27

0..7

Set

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 debe usar para identificar el tipo de servidor.

Vea también

Conceptos

Metadatos (OLE DB)