Compartir a través de


Enlazar parámetros

Cada marcador de parámetros de una instrucción SQL debe estar asociado o enlazado a una variable de la aplicación antes de que se pueda ejecutar la instrucción. Esto se hace llamando a la función SQLBindParameter. SQLBindParameter describe la variable de programa (dirección, tipo de datos de C, etc.) al controlador. También identifica el marcador de parámetros indicando su valor ordinal y, a continuación, describe las características del objeto SQL que representa (tipo de datos SQL, precisión, etc.).

Los marcadores de parámetros se pueden enlazar o reenlazar en cualquier momento antes de que se ejecute una instrucción. Un enlace de parámetro continúa activo hasta que se produce uno de los siguientes eventos:

  • Una llamada a SQLFreeStmt con el parámetro Option establecido en SQL_RESET_PARAMS libera todos los parámetros enlazados al identificador de instrucciones.

  • Una llamada a SQLBindParameter con ParameterNumber establecido en el ordinal de un marcador de parámetros enlazado libera automáticamente el enlace anterior.

Una aplicación también puede enlazar parámetros a matrices de variables de programa para procesar una instrucción SQL por lotes. Existen dos tipos de enlaces de matriz:

  • El enlace de modo de columna se hace cuando cada parámetro individual se enlaza a su propia matriz de variables.

    El enlace de modo de columna se especifica llamando a SQLSetStmtAttr con Attribute establecido en SQL_ATTR_PARAM_BIND_TYPE y ValuePtr establecido en SQL_PARAM_BIND_BY_COLUMN.

  • El enlace de modo de fila se hace cuando todos los parámetros de la instrucción SQL se enlazan como una unidad a una matriz de estructuras que contienen variables individuales para los parámetros.

    El enlace de modo de fila se especifica llamando a SQLSetStmtAttr con Attribute establecido en SQL_ATTR_PARAM_BIND_TYPE y ValuePtr establecido en el tamaño de la estructura que contiene las variables de programa.

Cuando el controlador ODBC de SQL Server Native Client envía parámetros de cadena de caracteres o binarios al servidor, rellena los valores hasta la longitud especificada en parámetro SQLBindParameterColumnSize. Si una aplicación de ODBC 2.x especifica 0 para ColumnSize, el controlador rellena el valor de parámetro hasta la precisión del tipo de datos. La precisión es 8000 cuando se conecta con los servidores de SQL Server, 255 cuando se conecta con versiones anteriores de SQL Server. ColumnSize está en bytes para las columnas de tipo variant.

SQL Server permite definir nombres para parámetros de procedimiento almacenado. ODBC 3.5 también introdujo la compatibilidad con el uso de parámetros con nombre para llamar a procedimientos almacenados de SQL Server. Esta compatibilidad se puede utilizar para:

  • Llamar a un procedimiento almacenado y proporcionar valores para un subconjunto de parámetros definido para el procedimiento almacenado.

  • Especifique los parámetros en la aplicación en un orden diferente que el orden especificado cuando se creó el procedimiento almacenado.

Los parámetros con nombre solamente se admiten cuando se utiliza la instrucción Transact-SQLEXECUTE o la secuencia de escape ODBC CALL para ejecutar un procedimiento almacenado.

Si SQL_DESC_NAME está establecido para un parámetro de procedimiento almacenado, todos los parámetros de procedimiento almacenado de la consulta también deben establecer SQL_DESC_NAME.  Si se usan literales en llamadas a procedimientos almacenados, en que los parámetros tienen SQL_DESC_NAME establecido, los literales deben utilizar el formato 'name=value', donde name es el nombre de parámetro de procedimiento almacenado (por ejemplo, @p1). Para obtener más información, vea Enlazar parámetros por nombre (parámetros con nombre).

Vea también

Conceptos