Compartir a través de


Metadatos: Parámetro y conjunto de filas

Se aplica a: SQL Server Azure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics Analytics Platform System (PDW)

Descargar controlador OLE DB

En este artículo, se proporciona información sobre 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 mediante prgParamInfo:

Tipo de parámetro wType ulParamSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
date DBTYPE_DBDATE 6 10 0 Desactivar
time DBTYPE_DBTIME2 10 8, 10..16 0..7 Set
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Desactivar
datetime DBTYPE_DBTIMESTAMP 16 23 3 Desactivar
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Set
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Set

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 solo es válido cuando se conecta a un servidor que ejecuta SQL Server 2008 (10.0.x) y versiones posteriores. 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 Omitido
date DBTYPE_DBDATE 6 Omitido
DBTYPE_DBTIME 10 Omitido
time DBTYPE_DBTIME2 10 0..7
smalldatetime 16 Omitido
datetime 16 Omitido
datetime2 o DBTYPE_DBTIMESTAMP DBTYPE_DBTIMESTAMP 16 0..7
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 0..7

Se omite el parámetro bPrecision.

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 conecte a los servidores de SQL Server 2008 (10.0.x) y versiones posteriores, 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 omite 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 establezca correctamente. Las aplicaciones actualizadas a partir de MDAC y OLE DB Driver for SQL Server de SQL Server 2005 (9.x) 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 (10.0.x), un valor bScale que no sea 0 o 3 con "DBTYPE_DBTIMESTAMP" es un error y se devolverá E_FAIL.

Cuando no se llama a ICommandWithParameters::SetParameterInfo, el proveedor supone que el tipo de servidor procede 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 Desactivar
time DBTYPE_DBTIME2 10 8, 10..16 0..7 Set
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Desactivar
datetime DBTYPE_DBTIMESTAMP 16 23 3 Desactivar
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Set
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Set

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 solo es válido cuando se conecta a un servidor que ejecuta SQL Server 2008 (10.0.x) y versiones posteriores. 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 Desactivar
time(1..7) DBTYPE_DBTIME2 10 8, 10..16 0..7 Set
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Desactivar
datetime DBTYPE_DBTIMESTAMP 16 23 3 Desactivar
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Set
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Set

En dwFlags, DBCOLUMNFLAGS_ISFIXEDLENGTH siempre es 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 tiene que usarse para identificar el tipo de servidor.

Consulte también

Compatibilidad con tipos de datos para mejoras de fecha y hora de OLE DB