Compartilhar via


Cursores ODBC

Um aplicativo busca dados com um cursor. Um cursor é diferente de um conjunto de resultados: um conjunto de resultados é o conjunto de linhas que corresponde a critérios de pesquisa específicos, enquanto um cursor é o software que retorna essas linhas para o aplicativo. O nome cursor, como aplicado em bancos de dados, provavelmente se originou do cursor piscando em um terminal de computador. Assim como esse cursor indica a posição atual na tela e onde as palavras digitadas serão exibidas em seguida, um cursor em um conjunto de resultados indica a posição atual e qual linha será retornada em seguida.

O modelo de cursor no ODBC baseia-se no modelo de cursor no SQL embutido. Uma diferença notável entre esses modelos é a forma como os cursores são abertos. No SQL inserido, um cursor deve ser declarado explicitamente e aberto antes de ser usado. No ODBC, um cursor é aberto implicitamente quando uma instrução que cria um conjunto de resultados é executada. Quando o cursor é aberto, ele é posicionado antes da primeira linha do conjunto de resultados. No SQL incorporado e no ODBC, um cursor deve ser fechado depois que o aplicativo terminar de usá-lo.

Cursores diferentes têm características diferentes. O tipo mais comum de cursor, que é chamado de cursor somente para frente, só pode avançar pelo conjunto de resultados. Para retornar a uma linha anterior, o aplicativo deve fechar e reabrir o cursor e ler linhas do início do conjunto de resultados até atingir a linha necessária. Os cursores somente para frente fornecem um mecanismo rápido para fazer uma única passagem por um conjunto de resultados.

Os cursores somente para frente são menos úteis para aplicativos baseados em tela, nos quais o usuário rola para trás e para frente pelos dados. Esses aplicativos podem usar um cursor de avanço único, lendo o conjunto de resultados uma vez, armazenando em cache os dados localmente e executando a rolagem por conta própria. No entanto, isso funciona bem apenas com pequenas quantidades de dados. Uma solução melhor é usar um cursor rolável, que fornece acesso aleatório ao conjunto de resultados. Esses aplicativos também podem aumentar o desempenho buscando mais de uma linha de dados por vez, usando o que é chamado de cursor de bloco. Para obter mais informações sobre cursores de bloco, consulte Usando cursores de bloco.

O cursor somente para encaminhamento é o tipo de cursor padrão no ODBC e é discutido nas seções a seguir. Para obter mais informações sobre cursores de bloco e cursores roláveis, consulte Cursores de Bloco e Cursores Roláveis.

Importante

Confirmar ou reverter uma transação, chamando explicitamente SQLEndTran ou operando no modo de confirmação automática, faz com que algumas fontes de dados fechem todos os cursores em todas as instruções em uma conexão. Para obter mais informações, consulte os atributos SQL_CURSOR_COMMIT_BEHAVIOR e SQL_CURSOR_ROLLBACK_BEHAVIOR na descrição da função SQLGetInfo .