Compartilhar via


Associar colunas de conjunto de resultados

Os aplicativos podem vincular quantas ou poucas colunas do conjunto de resultados quiserem, incluindo a vinculação de nenhuma coluna. Quando uma linha de dados é buscada, o driver retorna os dados das colunas acopladas para o aplicativo. Se o aplicativo vincula todas as colunas no conjunto de resultados depende do aplicativo. Por exemplo, aplicativos que geram relatórios geralmente têm um formato fixo; esses aplicativos criam um conjunto de resultados contendo todas as colunas usadas no relatório e, em seguida, vinculam e recuperam os dados de todas essas colunas. Aplicativos que exibem telas cheias de dados às vezes permitem que o usuário decida quais colunas exibir; esses aplicativos criam um conjunto de resultados contendo todas as colunas que o usuário pode desejar, mas vinculam e recuperam os dados somente para as colunas escolhidas pelo usuário.

Os dados podem ser recuperados de colunas não acopladas chamando SQLGetData. Isso é comumente chamado para recuperar dados longos, que geralmente excedem o comprimento de um único buffer e devem ser recuperados em partes.

As colunas podem ser vinculadas a qualquer momento, mesmo após as linhas terem sido buscadas. No entanto, as novas ligações não entram em vigor até a próxima vez que uma linha for buscada; eles não são aplicados a dados de linhas já buscadas.

Uma variável permanece vinculada a uma coluna até que uma variável diferente seja vinculada à coluna, até que a coluna seja desacoplada chamando SQLBindCol com um ponteiro nulo como o endereço da variável, até que todas as colunas sejam desvinculadas chamando SQLFreeStmt com a opção SQL_UNBIND ou até que a instrução seja liberada. Por esse motivo, o aplicativo deve ter certeza de que todas as variáveis vinculadas permaneçam válidas enquanto estiverem vinculadas. Para obter mais informações, veja Alocando e liberando buffers.

Como as associações de coluna são apenas informações associadas à estrutura da instrução, elas podem ser definidas em qualquer ordem. Eles também são independentes do conjunto de resultados. Por exemplo, suponha que um aplicativo vincule as colunas do conjunto de resultados gerado pela seguinte instrução SQL:

SELECT * FROM Orders  

Se o aplicativo executar a instrução SQL

SELECT * FROM Lines  

No mesmo identificador de instrução, as associações de coluna para o primeiro conjunto de resultados ainda estão em vigor porque essas são as ligações armazenadas na estrutura da instrução. Na maioria dos casos, esta é uma má prática de programação e deve ser evitada. Em vez disso, o aplicativo deve chamar SQLFreeStmt com a opção SQL_UNBIND para desvincular todas as colunas antigas e, em seguida, vincular novas.