Share via


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

Observaciones

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 (sólo 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.

NotaNota
Si SQL_SOPT_SS_PARAM_FOCUS se establece en su valor predeterminado de 0, SQL_ATTR_PARAMSET_SIZE hace referencia a la instrucción y especifica el número de conjuntos de parámetros. Si SQL_SOPT_SS_PARAM_FOCUS se establece en el ordinal de un parámetro con valores de tabla, hace referencia al parámetro con valores de tabla y especifica el número de filas por conjunto de parámetros del parámetro con valores de tabla.

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 sólo 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.