Usar parámetros de instrucciones: enlazar parámetros

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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 en orden de columna se especifica llamando a SQLSetStmtAttr con 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 en orden de fila se especifica llamando a SQLSetStmtAttr con 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 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 con la precisión del tipo de datos. La precisión es 8000 cuando se conecta con los servidores SQL Server, 255 cuando se conecta con versiones anteriores de SQL Server. ColumnSize está en bytes para las columnas variantes.

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 solo se admiten cuando se usa la instrucción EXECUTE de Transact-SQL o la secuencia de escape CALL de ODBC 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 de 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