Creación de conjuntos de filas de parámetros con valores de tabla
Aunque los consumidores pueden proporcionar cualquier objeto de conjunto de filas para los parámetros con valores de tabla, los objetos de conjunto de filas típicos se implementan para los almacenes de datos back-end y, por consiguiente, proporcionan un rendimiento limitado. Por esta razón, el proveedor OLE DB de SQL Server Native Client permite a los consumidores crear un objeto de conjunto de filas especializado encima de los datos en memoria. Este objeto de conjunto de filas especial en memoria es un nuevo objeto COM denominado conjunto de filas de parámetros con valores de tabla. Proporciona una funcionalidad similar a la de los conjuntos de parámetros.
El consumidor crea explícitamente objetos de conjunto de filas de parámetros con valores de tabla para los parámetros de entrada a través de varias interfaces de nivel de sesión. Hay una instancia de un objeto de conjunto de filas de parámetro con valores de tabla para cada parámetro con valores de tabla. El consumidor puede crear los objetos de conjunto de filas de parámetros con valores de tabla proporcionando información de metadatos que ya se conoce (escenario estático) o detectando esa información a través de interfaces de proveedor (escenario dinámico). En las secciones siguientes se describen los dos escenarios.
Escenario estático
Cuando se conoce la información de tipo, el consumidor utiliza ITableDefinitionWithConstraints::CreateTableWithConstraints para crear instancias de un objeto de conjunto de filas de parámetro con valores de tabla que corresponde a un parámetro con valores de tabla.
El campo guid (parámetro pTableID) contiene el GUID especial (CLSID_ROWSET_TVP). El miembro pwszName contiene el nombre del tipo de parámetro con valores de tabla del que el consumidor desea crear una instancia. El campo eKind se establecerá en DBKIND_GUID_NAME. Este nombre es necesario en una instrucción SQL ad hoc, pero es opcional en las llamadas a procedimientos.
Para la agregación, el consumidor pasa el parámetro pUnkOuter con el IUnknown de control.
Las propiedades del objeto de conjunto de filas de parámetros con valores de tabla son de solo lectura, por lo que no se espera que el consumidor establezca ninguna propiedad en rgPropertySets.
Para el miembro rgPropertySets de cada estructura DBCOLUMNDESC, el consumidor puede especificar propiedades adicionales para cada columna. Estas propiedades pertenecen a la propiedad DBPROPSET_SQLSERVERCOLUMN establecida. Permiten especificar la configuración calculada y predeterminada de cada columna. Admiten también propiedades de columna existentes, como la nulabilidad y la identidad.
Para recuperar la información correspondiente de un objeto de conjunto de filas de parámetros con valores de tabla, el consumidor utiliza IRowsetInfo::GetProperties.
Para recuperar información sobre el estado nulo, único, calculado y de actualización de cada columna, el consumidor utiliza IColumnsRowset::GetColumnsRowset o IColumnsInfo::GetColumnInfo. Estos métodos proporcionan información detallada sobre cada columna de conjunto de filas de parámetros con valores de tabla.
El consumidor especifica el tipo de cada columna del parámetro con valores de tabla. Esto es similar al modo en que se especifican las columnas cuando se crea una tabla en SQL Server. El consumidor obtiene un objeto de conjunto de filas de parámetros con valores de tabla del proveedor OLE DB de SQL Server Native Client a través del parámetro de salida ppRowset.
Escenario dinámico
Cuando el consumidor no tiene información de tipo, debe utilizar IOpenRowset::OpenRowset para crear instancias de los objetos de conjunto de filas de parámetros con valores de tabla. Todo lo que el consumidor tiene que proporcionar al proveedor es el nombre de tipo.
En este escenario, el proveedor obtiene la información de tipo de un objeto de conjunto de filas de parámetros con valores de tabla del servidor en nombre del consumidor.
Los parámetros pUnkOuter y pTableID deben estar establecidos del mismo modo que en el escenario estático. A continuación, el proveedor OLE DB de SQL Server Native Client obtiene la información de tipo (la información de columna y las restricciones) del servidor y devuelve un objeto de conjunto de filas de parámetros con valores de tabla a través del parámetro ppRowset. Esta operación requiere la comunicación con el servidor y, por consiguiente, su rendimiento no es tan bueno como el del escenario estático. El escenario dinámico solamente funciona con llamadas a procedimientos parametrizadas.
Vea también
Tasks
Usar parámetros con valores de tabla (OLE DB)