Share via


Tipo SQL de ODBC para parámetros con valores de tabla

Un nuevo tipo de SQL de ODBC, SQL_SS_TABLE, proporciona compatibilidad con parámetros con valores de tabla.

Observaciones

SQL_SS_TABLE no se puede convertir en ningún otro tipo de datos ODBC o SQL Server.

Si en el parámetro ValueType de SQLBindParameter se utiliza SQL_SS_TABLE como un tipo de datos de C o se intenta establecer SQL_DESC_TYPE en SQL_SS_TABLE en un registro del descriptor de parámetros de la aplicación (APD), se devuelve SQL_ERROR y se genera un registro de diagnóstico con SQLSTATE=HY003, "Tipo de búfer de aplicación no válido".

Si SQL_DESC_TYPE está establecido en SQL_SS_TABLE en un registro IPD y el registro del descriptor de parámetros de la aplicación correspondiente no es SQL_C_DEFAULT, se devuelve SQL_ERROR y se genera un registro de diagnóstico con SQLSTATE=HY003, "Tipo de búfer de aplicación no válido". Esto se puede producir con ParameterType de SQLSetDescField, SQLSetDescRec o SQLBindParameter.

Si el parámetro TargetType es SQL_SS_TABLE al llamar a SQLGetData, se devuelve SQL_ERROR y se genera un registro de diagnóstico con SQLSTATE=HY003, "Tipo de búfer de aplicación no válido".

Una columna de parámetro con valores de tabla no se puede enlazar como tipo SQL_SS_TABLE. Si se llama a SQLBindParameter con ParameterType establecido en SQL_SS_TABLE, se devuelve SQL_ERROR y se genera un registro de diagnóstico con SQLSTATE=HY004, "Tipo de datos SQL no válido". Esto también se puede producir con SQLSetDescField y SQLSetDescRec.

Los valores de las columnas de parámetros con valores de tabla tienen las mismas opciones de conversión de datos que las columnas de parámetros y resultado.

Un parámetro con valores de tabla puede ser sólo un parámetro de entrada en SQL Server 2008. Si se intenta establecer SQL_DESC_PARAMETER_TYPE en un valor distinto de SQL_PARAM_INPUT a través de SQLBindParameter o SQLSetDescField, se devuelve SQL_ERROR y se agrega un registro de diagnóstico a la instrucción con SQLSTATE=HY105 y el mensaje "Tipo de parámetro no válido".

Las columnas de parámetros con valores de tabla no pueden utilizar SQL_DEFAULT_PARAM en StrLen_or_IndPtr, porque los valores predeterminados por fila no se admiten con los parámetros con valores de tabla. En su lugar, una aplicación puede establecer el atributo de columna SQL_CA_SS_COL_HAS_DEFAULT_VALUE en 1. Esto significa que la columna tendrá los valores predeterminados para todas las filas. Si StrLen_or_IndPtr está establecido en SQL_DEFAULT_PARAM, SQLExecute o SQLExecDirect devolverá SQL_ERROR y se agregará un registro de diagnóstico a la instrucción con SQLSTATE=HY090 y el mensaje "Longitud de búfer o cadena no válida ".