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:
Defina SQL_SOPT_SS_CURSOR_OPTIONS como SQL_CO_FFO_AF.
Defina SQL_ATTR_ROW_ARRAY_SIZE como n + 1.
Associe as colunas de resultados a matrizes de n + 1 elementos (para ter segurança caso n + 1 linhas sejam efetivamente buscadas).
Abra o cursor com SQLExecDirect ou SQLExecute.
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.