Partilhar via


Parâmetros de ligação ODBC

Cada parâmetro numa instrução SQL deve ser associado, ou limitado, a uma variável na aplicação antes de a instrução ser executada. Quando a aplicação associa uma variável a um parâmetro, descreve essa variável – endereço, tipo de dado C, e assim por diante – ao driver. Também descreve o próprio parâmetro – tipo de dado SQL, precisão, e assim por diante. O driver armazena esta informação na estrutura que mantém para essa instrução e utiliza essa informação para recuperar o valor da variável quando a instrução é executada.

Os parâmetros podem ser atribuídos ou reatribuídos a qualquer momento antes de uma instrução ser executada. Se um parâmetro for rebound após a execução de uma instrução, a ligação não se aplica até que a instrução seja novamente executada. Para ligar um parâmetro a uma variável diferente, uma aplicação simplesmente religa o parâmetro com a nova variável; A encadernação anterior é automaticamente libertada.

Uma variável permanece vinculada a um parâmetro até que uma variável diferente esteja ligada ao parâmetro, até que todos os parâmetros sejam libertados ao chamar SQLFreeStmt com a opção SQL_RESET_PARAMS, ou até que a instrução seja libertada. Por esta razão, a aplicação deve garantir que as variáveis não são libertadas até estarem desvinculadas. Para mais informações, consulte Alocação e Libertação de Buffers.

Como as ligações de parâmetros são apenas informação armazenada na estrutura mantida pelo driver para a instrução, podem ser definidas em qualquer ordem. São também independentes da instrução SQL que é executada. Por exemplo, suponha que uma aplicação associa três parâmetros e depois executa a seguinte instrução SQL:

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

Se a aplicação executar imediatamente a instrução SQL

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

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

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