Campos de descriptor de parámetros con valores de tabla
La compatibilidad con los parámetros con valores de tabla incluye nuevos campos específicos de SQL Server en descriptores de parámetros de aplicación ODBC (APD) y descriptores de parámetros de implementación (IPD).
Comentarios
Nombre |
Ubicación |
Tipo |
Descripción |
---|---|---|---|
SQL_CA_SS_TYPE_NAME |
IPD |
SQLTCHAR* |
Nombre del tipo de servidor del parámetro con valores de tabla. Cuando se especifica un nombre de tipo de parámetro con valores de tabla en una llamada a SQLBindParameter, siempre se debe especificar como un valor Unicode, incluso en aplicaciones generadas como aplicaciones ANSI. El valor utilizado para el parámetro StrLen_or_IndPtr debe ser SQL_NTS o la longitud de cadena del nombre multiplicada por sizeof(WCHAR). Cuando se especifica un nombre de tipo de parámetro con valores de tabla a través de SQLSetDescField, se puede especificar utilizando un literal que se ajuste a la manera en que se genera la aplicación. El Administrador de controladores ODBC realizará cualquier conversión de Unicode necesaria. |
SQL_CA_SS_TYPE_CATALOG_NAME (solo lectura) |
IPD |
SQLTCHAR* |
Catálogo donde se define el tipo. |
SQL_CA_SS_TYPE_SCHEMA_NAME |
IPD |
SQLTCHAR* |
Esquema donde se define el tipo. |
Las aplicaciones no deben establecer SQL_CA_SS_TYPE_CATALOG_NAME en parámetros con valores de tabla. Si se establece, se devolverá SQL_ERROR y se registrará un error de diagnóstico con SQLSTATE = HY091 y el mensaje "identificador de campo descriptor no válido".
Cuando el enfoque del parámetro se establece en un parámetro con valores de tabla, se aplican los siguientes campos de encabezado de descriptor y atributos de instrucción a los parámetros con valores de tabla:
Nombre |
Ubicación |
Tipo |
Descripción |
---|---|---|---|
SQL_ATTR_PARAMSET_SIZE (Equivalente a SQL_DESC_ARRAY_SIZE en el APD.) |
APD |
SQLUINTEGER |
Tamaño de matriz de las matrices de búfer de un parámetro con valores de tabla. Éste es el número máximo de filas que los búferes pueden incluir o el tamaño de los búferes en filas; el propio valor de parámetro con valores de tabla puede tener más o menos filas de las que pueden incluir los búferes. El valor predeterminado es 1.
|
SQL_ATTR_PARAM _BIND_TYPE |
APD |
SQLINTEGER |
El valor predeterminado es SQL_PARAM_BIND_BY_COLUMN. Para seleccionar el enlace de modo de fila, este campo se establece en la longitud de la estructura o en una instancia de un búfer que se enlazará a un conjunto de filas de parámetro con valores de tabla. Esta longitud debe incluir el espacio para todas las columnas enlazadas y cualquier relleno de la estructura o búfer. De esta forma se garantiza que, cuando la dirección de una columna enlazada se incrementa con la longitud especificada, el resultado señalará al principio de la misma columna en la fila siguiente. Cuando se utiliza el operador sizeof en ANSI C, se garantiza este comportamiento. |
SQL_ATTR_PARAM_BIND_OFFSET_PTR |
APD |
SQLINTEGER* |
El valor predeterminado es un puntero NULL. Si este campo es no NULL, el controlador elimina las referencias el puntero, agrega el valor sin referencia a cada uno de los campos aplazados del registro de descriptor (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR y SQL_DESC_OCTET_LENGTH_PTR) y utiliza los nuevos valores de puntero para tener acceso a los valores de datos. |
Estos campos solo son válidos con parámetros con valores de tabla y se omiten en otros tipos de datos.
SQL_CA_SS_TYPE_NAME es opcional para las llamadas a procedimientos almacenados. Se debe especificar en instrucciones SQL que no son llamadas a procedimientos para permitir que el servidor determine el tipo de parámetro con valores de tabla.
Si se necesita el nombre de tipo y el tipo de tabla del parámetro con valores de tabla se define en un esquema diferente del procedimiento almacenado, se debe especificar SQL_CA_SS_TYPE_SCHEMA_NAME en el descriptor del parámetro de implementación (IPD). Si no se especifica, el servidor no podrá determinar el tipo del parámetro con valores de tabla. Esto generará un error al llamar a SQLExecute o SQLExecDirect. El error tendrá SQLSTATE = 07006 y el mensaje "Infracción del atributo de tipo de datos restringido".
Las columnas de parámetros con valores de tabla pueden utilizar el enlace de modo de fila o de modo de columna. El valor predeterminado es el enlace de modo de columna. El enlace de modo de fila se puede especificar estableciendo SQL_ATTR_PARAM_BIND_TYPE y SQL_ATTR_ PARAM_BIND_OFFSET_PTR. Es similar al enlace de modo de fila de columnas y parámetros.
SQL_CA_SS_TYPE_CATALOG_NAME y SQL_CA_SS_TYPE_SCHEMA_NAME también se pueden utilizar para recuperar el catálogo y el esquema asociados a parámetros de tipo definido por el usuario CLR. Éstas son las alternativas a los atributos de esquema y catálogo específicos del tipo existentes para estos tipos.