Associar parâmetros ODBC

Cada parâmetro em uma instrução SQL deve ser vinculado, ou associado, à uma variável no aplicativo antes da execução da instrução. Quando o aplicativo associa uma variável a um parâmetro, ele descreve essa variável (endereço, tipo de dados C e assim em diante) ao driver. Ele também descreve o parâmetro em si (tipo de dados SQL, precisão e assim em diante). O driver armazena essas informações na estrutura que ele mantém para essa instrução e usa as informações para recuperar o valor da variável quando a instrução é executada.

Parâmetros podem ser associados ou reassociados a qualquer momento antes de uma instrução ser executada. Se um parâmetro for recuperado depois que uma instrução for executada, a associação não se aplica até que a instrução seja executada novamente. Para associar um parâmetro a uma variável diferente, um aplicativo simplesmente associa novamente o parâmetro com a nova variável. A associação anterior é liberada automaticamente.

Uma variável permanece associada a um parâmetro até que uma variável diferente seja associada ao parâmetro, até que todos os parâmetros sejam desassociados chamando SQLFreeStmt com a opção SQL_RESET_PARAMS ou até que a instrução seja liberada. Por esse motivo, o aplicativo deve ter certeza de que as variáveis não sejam liberadas até depois de serem desassociadas. Para obter mais informações, consulte Alocar e liberar buffers.

Como as associações de parâmetro são apenas informações armazenadas na estrutura mantida para a instrução pelo driver, elas podem ser definidas em qualquer ordem. Eles também são independentes da instrução SQL que é executada. Por exemplo, suponha que um aplicativo associe três parâmetros e, em seguida, execute a seguinte instrução SQL:

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

Se o aplicativo executar imediatamente a instrução SQL

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

no mesmo identificador de instrução, as associações de parâmetro para a instrução INSERT são usadas porque essas são as associações armazenadas na estrutura da instrução. Na maioria dos casos, esta é uma prática inadequada de programação e deve ser evitada. Em vez disso, o aplicativo deve chamar SQLFreeStmt com a opção SQL_RESET_PARAMS para desassociar todos os parâmetros antigos e, em seguida, associar parâmetros novos.

Esta seção contém os tópicos a seguir.