Share via


Enlazar parámetros ODBC

Cada parámetro de una instrucción SQL debe estar asociado o enlazado a una variable de la aplicación antes de que se ejecute la instrucción. Cuando la aplicación enlaza una variable a un parámetro, describe esa variable (dirección, tipo de datos C, etc.) al controlador. También describe el propio parámetro (tipo de datos SQL, precisión, etc.). El controlador almacena esta información en la estructura que mantiene para esa instrucción y usa la información para recuperar el valor de la variable cuando se ejecuta la instrucción.

Los parámetros se pueden enlazar o reenlazar en cualquier momento antes de que se ejecute una instrucción. Si un parámetro se vuelve a enlazar después de ejecutar una instrucción, el enlace no se aplica hasta que se vuelva a ejecutar la instrucción. Para enlazar un parámetro a una variable diferente, una aplicación simplemente vuelve a enlazar el parámetro con la nueva variable; el enlace anterior se libera automáticamente.

Una variable permanece enlazada a un parámetro hasta que se le enlace otra variable, hasta que todos los parámetros se desenlazen llamando a SQLFreeStmt con la opción SQL_RESET_PARAMS o hasta que se libere la instrucción. Por este motivo, la aplicación debe asegurarse de que las variables no se liberen hasta después de desenlazarse. Para obtener más información, consulte Asignar y liberar búferes.

Dado que los enlaces de parámetros son simplemente información almacenada en la estructura mantenida por el controlador para la instrucción, se pueden establecer en cualquier orden. También son independientes de la instrucción SQL que se ejecuta. Por ejemplo, supongamos que una aplicación enlaza tres parámetros y, a continuación, ejecuta la siguiente instrucción SQL:

INSERT INTO Parts (PartID, Description, Price) VALUES (?, ?, ?)  

Si la aplicación ejecuta inmediatamente la instrucción SQL

SELECT * FROM Orders WHERE OrderID = ?, OpenDate = ?, Status = ?  

en el mismo identificador de instrucción, se usan los enlaces de parámetro de la instrucción INSERT porque son los enlaces almacenados en la estructura de instrucciones. En la mayoría de los casos, se trata de una práctica de programación no recomendada y debe evitarse. En su lugar, la aplicación debe llamar a SQLFreeStmt con la opción SQL_RESET_PARAMS para desenlazar todos los parámetros antiguos y, a continuación, enlazar nuevos.

Esta sección contiene los temas siguientes.