Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Muitas aplicações passam uma quantidade significativa de tempo a transportar dados através da rede. Parte desse tempo é gasta a transportar os dados pela rede, e parte é dedicada à sobrecarga da rede, como a chamada feita pelo motorista para solicitar uma linha de dados. Este último tempo pode ser reduzido se a aplicação fizer uso eficiente de cursores de bloco, ou fat, que podem devolver mais do que uma linha de cada vez.
Uma aplicação tem sempre a opção de usar um cursor de bloco. Em fontes de dados das quais apenas uma linha de cada vez pode ser obtida, cursores em bloco devem ser simulados no driver. Isto pode ser feito efetuando múltiplas buscas de linha única. Embora isto seja improvável que traga qualquer ganho de desempenho, abre oportunidades para aplicações. Estas aplicações vão então experimentar aumentos de desempenho à medida que os SGBDs implementam cursores de bloco nativamente e os drivers associados a esses SGBDs os expõem.
As linhas devolvidas numa única busca com um cursor de bloco são chamadas de conjunto de linhas. É importante não confundir o conjunto de linhas com o conjunto de resultados. O conjunto de resultados é mantido na fonte de dados, enquanto o conjunto de linhas é mantido nos buffers da aplicação. Embora o conjunto de resultados seja fixo, o conjunto de linhas não é – muda de posição e conteúdo cada vez que um novo conjunto de linhas é buscado. Tal como um cursor de uma única linha, como o cursor tradicional de SQL apenas para frente, aponta para uma linha atual, um cursor de bloco aponta para o conjunto de linhas, que pode ser considerado como linhas atuais.
Para realizar operações que operam numa única linha quando várias linhas foram obtidas, a aplicação deve primeiro indicar qual é a linha atual. A linha atual é exigida por chamadas ao SQLGetData e por instruções posicionadas de atualização e eliminação. Quando um cursor de bloco devolve pela primeira vez um conjunto de linhas, a linha atual é a primeira linha do conjunto de linhas. Para modificar a linha atual, a aplicação chama SQLSetPos ou SQLBulkOperations (para atualizar por marcador). A ilustração seguinte mostra a relação entre o conjunto de resultados, conjunto de linhas, linha atual, cursor de conjunto de linhas e cursor de blocos. Para mais informações, consulte Utilização de Cursores de Bloco, mais adiante nesta secção, e Instruções de Atualização e Eliminação Posicionadas e Atualização de Dados com SQLSetPos.
Se um cursor é um cursor de bloco, isso é independente de ele poder ser percorrido. Por exemplo, a maior parte do trabalho numa aplicação de relatório é dedicada a recuperar e imprimir linhas. Por isso, funciona mais rapidamente com um cursor de bloco apenas para avançar. Utiliza um cursor orientado para a frente para evitar o custo de um cursor com capacidade de rolagem, e um cursor de bloco para diminuir o tráfego na rede.
Esta seção contém os seguintes tópicos.