Share via


SQLBindParameter

SQLBindParameter puede eliminar la carga de conversión de datos cuando se usa para proporcionar datos para el controlador ODBC de SQL Server Native Client, produciendo ganancias de rendimiento significativas para los componentes de servidor y cliente de las aplicaciones. Entre otras ventajas se incluyen la pérdida reducida de precisión al insertar o actualizar los tipos de datos numéricos aproximados.

[!NOTA]

Al insertar los datos de tipo char y wchar en una columna de imagen, se usa el tamaño de los datos pasados, a diferencia del tamaño de los datos después de la conversión a un formato binario.

Si el controlador ODBC de SQL Server Native Client encuentra un error en un elemento de matriz único de una matriz de parámetros, el controlador continúa ejecutando la instrucción para los elementos de matriz restantes. Si la aplicación ha enlazado una matriz de elementos de estado de parámetro para la instrucción, las filas de parámetros que generan errores se pueden determinar de la matriz.

Al usar el controlador ODBC de SQL Server Native Client, especifique SQL_PARAM_INPUT al enlazar parámetros de entrada. Especifique únicamente SQL_PARAM_OUTPUT o SQL_PARAM_INPUT_OUTPUT al enlazar parámetros de procedimientos almacenados definidos con la palabra clave OUTPUT.

SQLRowCount no es confiable con el controlador ODBC de SQL Server Native Client si un elemento de matriz de parámetros enlazados produce un error en la ejecución de la instrucción. El atributo de instrucción ODBC SQL_ATTR_PARAMS_PROCESSED_PTR notifica el número de filas procesadas antes de que se produzca el error. A continuación, la aplicación puede atravesar su matriz de estado de parámetro para detectar el número de instrucciones ejecutado correctamente, si es necesario.

Enlazar parámetros para tipos de caracteres SQL

Si el tipo de datos SQL que se pasa es un tipo de caracteres, ColumnSize es el tamaño en caracteres (no en bytes). Si la longitud de la cadena de datos en bytes es mayor de 8000, ColumnSize debería establecerse en SQL_SS_LENGTH_UNLIMITED, lo que indica que no hay límite en el tamaño del tipo SQL.

Por ejemplo, si el tipo de datos SQL es SQL_WVARCHAR, ColumnSize no debe ser mayor que 4000. Si la longitud real de los datos es mayor que 4000, ColumnSize debe establecerse en SQL_SS_LENGTH_UNLIMITED para que el controlador use nvarchar(max).

SQLBindParameter y parámetros con valores de tabla

Como otros tipos de parámetros, los parámetros con valores de tabla se enlazan mediante SQLBindParameter.

Una vez enlazado un parámetro con valores de tabla, también se enlazan sus columnas. Para enlazar las columnas, llame a SQLSetStmtAttr para establecer SQL_SOPT_SS_PARAM_FOCUS en el ordinal del parámetro con valores de tabla. A continuación, llame a SQLBindParameter para cada columna en el parámetro con valores de tabla. Para volver a los enlaces de parámetro de nivel superior, establezca SQL_SOPT_SS_PARAM_FOCUS en 0.

Para obtener más información sobre la asignación de parámetros a los campos de descriptor para los parámetros con valores de tabla, vea Enlace y transferencia de datos de valores de columnas y parámetros con valores de tabla.

Para obtener más información acerca de los parámetros con valores de tabla, vea Parámetros con valores de tabla (ODBC).

SQLBindParameter admite las características mejoradas de fecha y hora

Los valores de parámetro de tipos de fecha y hora se convierten como se describe en Conversiones de C a SQL. Observe que los parámetros de tipo time y datetimeoffset deben tener ValueType especificado como SQL_C_DEFAULT o SQL_C_BINARY si se usan sus estructuras correspondientes (SQL_SS_TIME2_STRUCT y SQL_SS_TIMESTAMPOFFSET_STRUCT).

Para obtener más información, vea Mejoras en los tipos de datos de fecha y hora (ODBC).

Compatibilidad con SQLBindParameter para los UDT CLR grandes

SQLBindParameter admite tipos definidos por el usuario (UDT) CLR grandes. Para obtener más información, vea Tipos CLR grandes definidos por el usuario (ODBC).