Como para buscar dados SQL a partir de uma única linha

UMA cursor

permite que o SQL para recuperar (ou atualizar ou excluir) uma única linha de cada vez para que você pode usar SQL em combinação com um aplicativo escrito em qualquer das línguas populares. Processamento cursores é um processo de três etapas:

  1. o DECLARE CURSOR declaração especifica nome e escopo do cursor.

  2. o ABERTO declaração recolhe as linhas da tabela selecionadas pelo DECLARE CURSOR consultar expressão.

  3. o BUSCAR declaração na verdade recupera os dados.

O cursor pode apontar para uma das linhas no escopo do cursor, ou para o local imediatamente antes da primeira linha no âmbito ou para a posição imediatamente após a última linha no escopo, ou para o espaço vazio entre duas linhas. Você pode especificar onde o cursor aponta com a cláusula de orientação no BUSCAR declaração.

Sintaxe

A sintaxe para a BUSCAR declaração é

FETCH [[orientação] FROM] cursor-nameINTO alvo de especificação [, alvo de especificação] ... -

Sete opções de orientação estão disponíveis:

  • PRÓXIMO

  • ANTERIOR

  • PRIMEIRO

  • ÚLTIMO

  • ABSOLUTO

  • RELATIVO

A opção padrão é PRÓXIMO, que, aliás, foi o orientação disponível nas versões do SQL antes de SQL-92. o PRÓXIMO orientação move o cursor de onde quer que seja para a próxima linha no conjunto especificado pela expressão de consulta. Isso significa que se o cursor está localizado antes do primeiro registro, ele se move para o primeiro registro.

Se ele aponta para gravar N, move-se para gravar n+1. Se o cursor aponta para o último registro no conjunto, ele se move para além desse registro e notificação de uma condição não são devolvidos dados no SQLSTATE variável do sistema.

As especificações-alvo são ou variáveis ​​do host ou parâmetros, dependendo se o SQL embutido ou uma linguagem módulo, respectivamente, está usando o cursor. O número e tipos das especificações-alvo deve coincidir com o número e tipos das colunas especificadas pela expressão de consulta no DECLARE CURSOR.

Assim, no caso de SQL embutido, quando você obter uma lista de cinco valores a partir de uma linha de uma tabela, cinco variáveis ​​de host deve estar lá para receber esses valores, e eles devem ser os tipos certos.

Orientação de um cursor rolável

Porque o cursor SQL é de rolagem, você tem outras opções além PRÓXIMO. Se você especificar ANTERIOR, o ponteiro se move para a linha imediatamente anterior à sua localização actual. Se você especificar PRIMEIRO, ele aponta para o primeiro registro no conjunto, e se você especificar ÚLTIMO, ele aponta para o último registro.

Quando você usa o ABSOLUTO e RELATIVO orientação, você deve especificar um valor inteiro, como bem. Por exemplo, FETCH ABSOLUTE 7 move o cursor para a sétima linha, desde o início do conjunto. FETCH RELATIVE 7 move o cursor sete linhas além da sua posição atual. FETCH RELATIVE 0 não move o cursor.

FETCH RELATIVE 1 tem o mesmo efeito que BUSQUE PRÓXIMA. FETCH RELATIVE -1 tem o mesmo efeito que BUSQUE PRÉVIA. FETCH ABSOLUTE 1 dá-lhe o primeiro registro no conjunto, FETCH ABSOLUTE 2 dá-lhe o segundo registro no conjunto, e assim por diante.

Similarmente, FETCH ABSOLUTE -1 dá-lhe o último registro no conjunto, FETCH ABSOLUTE -2 dá-lhe o próximo ao último registro, e assim por diante. especificando FETCH ABSOLUTE 0 retorna a exceção código de condição de não-dados, como a vontade FETCH ABSOLUTE 17 Se apenas 16 linhas estão no conjunto. BUSCAR dá-lhe o registro especificado pela especificação de valor simples.

instruções DELETE e UPDATE posicionadas

Você pode executar operações de exclusão e atualização na linha para que um cursor está apontando. A sintaxe do EXCLUIR declaração parece com isso:

DELETE FROM nome da tabela WHERE CURRENT OF nome-cursor -

Se o cursor não apontar para uma linha, a instrução retorna uma condição de erro, e sem exclusão ocorre.

A sintaxe do ATUALIZAR instrução é a seguinte:

Atualizar a tabela-nameset column-name = value [, column-name = value] ... WHERE CURRENT OF nome-cursor -

O valor que você coloca em cada coluna especificado deve ser uma expressão de valor ou a palavra-chave PADRÃO. Se uma operação de atualização posicionada tentativa de retornar um erro, a atualização não é executada.

menu