Compartir por


Usar parámetros de instrucciones: enlazar parámetros

Se aplica a: SQL Server Azure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics Analytics Platform System (PDW)

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. Para ello, se llama a la función SQLBindParameter . SQLBindParameter describe la variable de programa (dirección, tipo de datos de C, etc.) para el 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 instrucción.

  • Una llamada a SQLBindParameter con ParameterNumber establecido en el ordinal de un marcador de parámetro 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 columnas se especifica mediante una llamada a SQLSetStmtAttr con el atributo 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 fila se especifica mediante una llamada a SQLSetStmtAttr con el atributo 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 binaria o de caracteres al servidor, rellena los valores a la longitud especificada en el parámetro ColumnSize de SQLBindParameter. Si una aplicación ODBC 2.x especifica 0 para ColumnSize, el controlador rellena el valor del parámetro en la precisión del tipo de datos. La precisión es 8000 cuando se conecta a servidores de SQL Server, 255 cuando se conecta a versiones anteriores de SQL Server. ColumnSize está en bytes para las columnas variant.

SQL Server admite la definición de nombres para parámetros de procedimiento almacenado. ODBC 3.5 también introdujo compatibilidad con parámetros con nombre usados al 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 solo se admiten al usar la instrucción EXECUTE de Transact-SQL o la secuencia de escape ODBC CALL para ejecutar un procedimiento almacenado.

Si SQL_DESC_NAME se establece 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 los literales se usan en llamadas a procedimientos almacenados, donde los parámetros tienen SQL_DESC_NAME establecido, los literales deben usar el formato "name=value", donde name es el nombre del parámetro del procedimiento almacenado (por ejemplo, . @p1) Para obtener más información, vea Binding Parameters by Name (Named Parameters).

Consulte también

Usar parámetros de instrucciones