Compartilhar via


Cursores de somente avanço rápido (ODBC)

Quando conectado a uma instância do SQL Server, o driver ODBC do SQL Server Native Client oferece suporte a otimizações de desempenho para cursores de somente avanço, somente leitura. Os cursores de somente avanço são implementados internamente pelo driver e pelo servidor de maneira bem semelhante a conjuntos de resultados padrão. Além de ter alto desempenho, os cursores de somente avançado também têm essas características:

  • Não há suporte para SQLGetData. As colunas do conjunto de resultados devem ser associadas para programar variáveis.

  • O servidor fecha automaticamente o cursor quando se detecta a extremidade do cursor. O aplicativo ainda deve chamar SQLCloseCursor ou SQLFreeStmt(SQL_CLOSE), mas o driver não precisa enviar a solicitação de fechamento para o servidor. Isso economiza uma viagem de ida-e-volta na rede até o servidor.

O aplicativo solicita cursores de somente avanço usando o atributo da instrução específica do driver SQL_SOPT_SS_CURSOR_OPTIONS. Quando definidos como SQL_CO_FFO, os cursores de somente avanço são habilitados sem busca automática. Quando definida como SQL_CO_FFO_AF, a opção de busca automática também é habilitada. Para obter mais informações sobre a busca automática, consulte Usando a opção Autofetch com cursores ODBC.

Os cursores de somente avanço com busca automática podem ser usados para recuperar um pequeno conjunto de resultados com apenas uma viagem de ida-e-volta até o servidor. Nessas etapas, n é o número de linhas a ser retornado:

  1. Defina SQL_SOPT_SS_CURSOR_OPTIONS como SQL_CO_FFO_AF.

  2. Defina SQL_ATTR_ROW_ARRAY_SIZE como n + 1.

  3. Associe as colunas de resultados a matrizes de n + 1 elementos (para ter segurança caso n + 1 linhas sejam efetivamente buscadas).

  4. Abra o cursor com SQLExecDirect ou SQLExecute.

  5. Caso o status de retorno seja SQL_SUCCESS, chame SQLFreeStmt ou SQLCloseCursor para fechar o cursor. Todos os dados das linhas estarão nas variáveis de programas associados.

Com essas etapas, o SQLExecDirect ou SQLExecute envia uma solicitação de cursor aberta com a opção de busca automática habilitada. Nessa solicitação única do cliente, o servidor:

  • Abre o cursor.

  • Compila o conjunto de resultados e envia as linhas para o cliente.

  • Como o tamanho do conjunto de linhas foi definido como 1 além do número de linhas do conjunto de resultados, o servidor detecta o final do cursor e o fecha.

Consulte também

Conceitos