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.
A maioria das opções de scroll no SQLFetchScroll posiciona o cursor em relação à posição atual ou a uma posição absoluta. O SQLFetchScroll suporta a obtenção dos próximos, anteriores, primeiros e últimos conjuntos de linhas, bem como busca relativa (buscar o conjunto de linhas n a partir do início do conjunto atual) e busca absoluta (buscar o conjunto de linhas a partir da linha n). Se n for negativo numa busca absoluta, as linhas são contadas a partir do final do conjunto de resultados. Assim, uma busca absoluta da linha -1 significa buscar o conjunto de linhas que começa com a última linha do conjunto de resultados.
Os cursores dinâmicos detetam linhas inseridas e eliminadas do conjunto de resultados, pelo que não há uma forma fácil de os cursores dinâmicos recuperarem a linha num número específico, exceto lendo a partir do início do conjunto de resultados, o que provavelmente será lento. Além disso, a busca absoluta não é muito útil em cursores dinâmicos porque os números das linhas mudam à medida que as linhas são inseridas e eliminadas; portanto, buscar sucessivamente o mesmo número de linhas pode gerar linhas diferentes.
Aplicações que utilizam SQLFetchScroll apenas para as capacidades de cursor de bloco, como relatórios, tendem a passar pelo conjunto de resultados uma única vez, usando apenas a opção de obter o próximo conjunto de linhas. As aplicações baseadas em ecrã, por outro lado, podem tirar partido de todas as capacidades do SQLFetchScroll. Se a aplicação definir o tamanho do conjunto de linhas para o número de linhas exibidas no ecrã e associar os buffers de ecrã ao conjunto de resultados, pode traduzir as operações da barra de scroll diretamente para chamadas ao SQLFetchScroll.
| Funcionamento da barra de deslocamento | Opção de deslocamento SQLFetchScroll |
|---|---|
| Subir página | SQL_FETCH_PRIOR |
| Descer página | SQL_FETCH_NEXT |
| Alinhar | SQL_FETCH_RELATIVE com FetchOffset igual a -1 |
| Linha abaixo | SQL_FETCH_RELATIVE com FetchOffset igual a 1 |
| Caixa de rolagem no topo | SQL_FETCH_FIRST |
| Barra de rolagem na parte inferior | SQL_FETCH_LAST |
| Posição aleatória da área de rolagem | SQL_FETCH_ABSOLUTE |
Estas aplicações também precisam de posicionar a caixa de rolagem após uma operação de deslocamento, o que requer o número da linha atual e o número total de linhas. Para o número de linha atual, as aplicações podem acompanhar o número de linha atual ou chamar SQLGetStmtAttr com o atributo SQL_ATTR_ROW_NUMBER para o recuperar.
O número de linhas no cursor, que é o tamanho do conjunto de resultados, está disponível como o campo SQL_DIAG_CURSOR_ROW_COUNT do cabeçalho de diagnóstico. O valor neste campo é definido apenas depois de SQLExecute, SQLExecDirect ou SQLMoreResult ter sido chamado. Esta contagem pode ser aproximada ou exata, dependendo das capacidades do condutor. O suporte do driver pode ser determinado ao chamar SQLGetInfo com os tipos de informação dos atributos do cursor e ao verificar se o bit SQL_CA2_CRC_APPROXIMATE ou SQL_CA2_CRC_EXACT é retornado para o tipo de cursor.
Nunca é suportada uma contagem exata de linhas para um cursor dinâmico. Para outros tipos de cursores, o driver pode suportar contagens exatas ou aproximadas de linhas, mas não ambas. Se o driver não suportar nem contagens exatas nem aproximadas de linhas para um tipo específico de cursor, o campo SQL_DIAG_CURSOR_ROW_COUNT contém o número de linhas que foram recolhidas até ao momento. Independentemente do que o driver suporta, o SQLFetchScroll com uma Operação de SQL_FETCH_LAST fará com que o campo SQL_DIAG_CURSOR_ROW_COUNT contenha a contagem exata de linhas.