Partilhar via


Recuperando resultados (Avançado)

Uma aplicação pode especificar que um deslocamento é adicionado aos endereços do buffer de dados limitados e aos endereços correspondentes de comprimento/indicador do buffer quando é chamado SQLBulkOperations, SQLFetch, SQLFetchScroll ou SQLSetPos. Os resultados destas adições determinam os endereços usados nestas operações.

Os deslocamentos de ligação permitem a uma aplicação alterar ligações sem chamar SQLBindCol para colunas previamente ligadas. Uma chamada ao SQLBindCol para reassociar os dados altera o endereço do buffer e o ponteiro de comprimento/indicador. Rebinding com um offset, por outro lado, simplesmente acrescenta um offset ao endereço do buffer de dados vinculado existente e ao endereço do buffer de comprimento/indicador vinculado existente. Quando são usados deslocamentos, as associações são um "modelo" de como os buffers da aplicação estão dispostos, e a aplicação pode mover esse "modelo" para diferentes áreas da memória ao alterar o deslocamento. Um novo deslocamento pode ser especificado a qualquer momento e é sempre adicionado aos valores originalmente limitados.

Para especificar um offset de ligação, a aplicação define o atributo de instrução SQL_ATTR_ROW_BIND_OFFSET_PTR ao endereço de um buffer SQLINTEGER. Antes de a aplicação chamar uma função que utiliza os bindings, como SQLBulkOperations, SQLFetch, SQLFetchScroll ou SQLSetPos, coloca um offset em bytes neste buffer, desde que nem o endereço do data buffer nem o endereço do buffer de comprimento/indicador sejam 0, e desde que a coluna limitada esteja no conjunto de resultados. A soma do endereço e do deslocamento deve ser um endereço válido. (Isto significa que um ou ambos o deslocamento e o endereço ao qual o deslocamento é adicionado podem ser inválidos, desde que a 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 offset possa ser aplicado a mais do que um conjunto de dados de ligação, todos os quais podem ser alterados alterando um valor de deslocamento. Uma aplicação deve garantir que o ponteiro permanece válido até que o cursor seja fechado.

Observação

Os deslocamentos de ligação não são suportados por drivers ODBC 2.x.

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