Recuperar resultados (avançado)

Um aplicativo pode especificar que um deslocamento seja adicionado aos endereços de buffer de dados vinculados e aos endereços de buffer de comprimento/indicador correspondentes quando SQLBulkOperations, SQLFetch, SQLFetchScroll ou SQLSetPos for chamado. Os resultados dessas adições determinam os endereços que essas operações usam.

Os deslocamentos de vinculação permitem que um aplicativo altere associações sem chamar SQLBindCol para colunas já associadas. Uma chamada a SQLBindCol para revincular dados altera o endereço do buffer e o ponteiro de comprimento/indicador. A reassociação a um deslocamento, por outro lado, apenas adiciona um deslocamento ao endereço do buffer de dados associados e ao endereço do buffer de comprimento/indicador. Quando são usados deslocamentos, as associações são um "modelo" de como os buffers do aplicativo são dispostos, e o aplicativo pode mover esse "modelo" para diferentes áreas da memória alterando o deslocamento. É possível especificar um novo deslocamento a qualquer momento, e ele sempre é adicionado aos valores originalmente vinculados.

Para especificar um deslocamento de associação, o aplicativo define o atributo de instrução SQL_ATTR_ROW_BIND_OFFSET_PTR para o endereço de um buffer SQLINTEGER. Antes de chamar uma função que usa as associações, como SQLBulkOperations, SQLFetch, SQLFetchScroll ou SQLSetPos, o aplicativo coloca um deslocamento em bytes nesse buffer, desde que nem o endereço do buffer de dados nem o endereço do buffer de comprimento/indicador seja 0 e desde que a coluna acoplada esteja no conjunto de resultados. A soma do deslocamento e do endereço deve ser um endereço válido. (Isso significa que um ou ambos os deslocamentos e o endereço ao qual o deslocamento é adicionado podem ser inválidos, desde que sua soma seja um endereço válido.) O atributo da instrução SQL_ATTR_ROW_BIND_OFFSET_PTR é um ponteiro para que o valor de deslocamento possa ser aplicado a mais de um conjunto de dados de associação, sendo que todos eles podem ser alterados modificando um valor de deslocamento. Um aplicativo deve assegurar que o ponteiro permaneça válido até que o cursor seja fechado.

Observação

Drivers ODBC 2.x não dão suporte para deslocamentos de associação.

Esta seção apresenta os tópicos a seguir.