Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Quando ligado a uma instância do SQL Server, o driver ODBC do SQL Server Native Client suporta otimizações de desempenho para cursores apenas para frente, apenas leitura. Os cursores apenas para avanço rápido são implementados internamente pelo driver e pelo servidor de forma muito semelhante aos conjuntos de resultados padrão. Para além de terem alto desempenho, os cursores apenas de avanço rápido também apresentam estas características:
SQLGetData não é suportado. As colunas do conjunto de resultados devem ser vinculadas a variáveis de programa.
O servidor fecha automaticamente o cursor quando o final do cursor é detetado. A aplicação deve continuar a chamar SQLCloseCursor ou SQLFreeStmt(SQL_CLOSE), mas o driver não tem de enviar o pedido de fecho para o servidor. Isto poupa uma viagem de ida e volta pela rede até ao servidor.
A aplicação solicita cursores apenas para avanço rápido usando o atributo de instrução específico do driver SQL_SOPT_SS_CURSOR_OPTIONS. Quando definido para SQL_CO_FFO, os cursores apenas para avanço rápido estão ativados sem autobusca. Quando definido para SQL_CO_FFO_AF, a opção de busca automática também está ativada. Para mais informações sobre autobusca, veja Usar Autofetch com Cursores ODBC.
Cursores apenas de avanço rápido com autobusca podem ser usados para recuperar um pequeno conjunto de resultados com apenas uma ida e volta ao servidor. Nestes passos, n é o número de linhas a devolver:
Define SQL_SOPT_SS_CURSOR_OPTIONS para SQL_CO_FFO_AF.
Defina SQL_ATTR_ROW_ARRAY_SIZE para n + 1.
Vincule as colunas de resultado a arrays de n + 1 elementos (para garantir, se n + 1 linhas forem realmente buscadas).
Abra o cursor com SQLExecDirect ou SQLExecute.
Se o estado de retorno for SQL_SUCCESS, então chame SQLFreeStmt ou SQLCloseCursor para fechar o cursor. Todos os dados das linhas estarão nas variáveis de programa limitadas.
Com estes passos, o SQLExecDirect ou SQLExecute envia um pedido de abertura do cursor com a opção de busca automática ativada. Nesse único pedido do cliente, o servidor:
Abre o cursor.
Constrói o conjunto de resultados e envia as linhas para o cliente.
Como o tamanho do conjunto de linhas foi definido para 1 a mais do que o número de linhas no conjunto de resultados, o servidor deteta o fim do cursor e fecha o cursor.