Compartir a través de


Ejecución de comandos que contienen parámetros de Table-Valued

La ejecución de un comando que contiene parámetros con valores de tabla requiere dos fases:

  1. Especifique los tipos de parámetro.

  2. Enlace los datos del parámetro.

Especificación de parámetros de Table-Valued

El consumidor puede especificar el tipo del parámetro con valores de tabla. Esta información incluye el nombre del tipo de parámetro con valores de tabla. También incluye el nombre del esquema, si el tipo de tabla definido por el usuario para el parámetro con valores de tabla no está en el esquema predeterminado actual para la conexión. Según la compatibilidad con el servidor, el consumidor también puede especificar información de metadatos opcional, como la ordenación de columnas, y puede especificar que todas las filas de columnas concretas tengan los valores predeterminados.

Para especificar un parámetro con valores de tabla, el consumidor llama a ISSCommandWithParameter::SetParameterInfo y, opcionalmente, llama a ISSCommandWithParameters::SetParameterProperties. Para un parámetro con valores de tabla, el campo pwszDataSourceType de la estructura DBPARAMBINDINFO tiene un valor de DBTYPE_TABLE. El campo ulParamSize se establece en ~0 para indicar que se desconoce la longitud. Las propiedades concretas de los parámetros con valores de tabla, como el nombre de esquema, el nombre de tipo, el orden de columna y las columnas predeterminadas, se pueden establecer mediante ISSCommandWithParameters::SetParameterProperties.

Enlace de parámetros Table-Valued

Un parámetro con valores de tabla puede ser cualquier objeto de conjunto de filas. El proveedor lee de este objeto al enviar parámetros con valores de tabla al servidor durante la ejecución.

Para enlazar el parámetro con valores de tabla, el consumidor llama a IAccessor::CreateAccessor. El campo wType de la estructura DBBINDING para el parámetro con valores de tabla se establece en DBTYPE_TABLE. El miembro pObject de la estructura DBBINDING no es NULL y el miembro iid de pObject se establece en IID_IRowset o en cualquier otra interfaz de objeto de conjunto de filas de parámetros con valores de tabla. Los campos restantes de la estructura DBBINDING deben establecerse de la misma manera que se establecen para blobs transmitidos por secuencias.

En los enlaces para el parámetro con valores de tabla y el objeto de conjunto de filas asociado a un parámetro con valores de tabla, se aplican las restricciones siguientes:

  • Los únicos valores de estado permitidos para los datos de columna del conjunto de filas de parámetros con valores de tabla son DBSTATUS_S_ISNULL y DBSTATUS_S_OK. DBSTATUS_S_DEFAULT producirá un error y el valor de estado enlazado se establecerá en DBSTATUS_E_BADSTATUS.

  • Un parámetro con valores de tabla se puede marcar con el estado DBSTATUS_S_DEFAULT. Los únicos valores válidos son DBSTATUS_S_DEFAULT y DBSTATUS_S_OK. Cuando el estado se establece en DBSTATUS_S_DEFAULT, el valor del parámetro con valores de tabla corresponde a una tabla vacía.

  • Las columnas de solo lectura de los parámetros con valores de tabla (identidad o columnas calculadas) deben marcarse como predeterminadas mediante la propiedad SSPROP_PARAM_TABLE_DEFAULT_COLUMNS. Las columnas que tienen un valor predeterminado también deben marcarse como predeterminadas a través de SSPROP_PARAM_TABLE_DEFAULT_COLUMNS propiedad para permitir que el valor predeterminado se use para los valores de datos de la columna para un parámetro con valores de tabla determinado. El proveedor omitirá los valores de datos enlazados para las columnas marcadas como predeterminadas.

  • Los datos se enviarán al servidor para las columnas con DBPROP_COL_AUTOINCREMENT o SSPROP_COL_COMPUTED, a menos que también se establezca SSPROP_PARAM_TABLE_DEFAULT.

Véase también

parámetros deTable-Valued (OLE DB)
Uso de parámetros de Table-Valued (OLE DB)