DB2 - Banco de dados - Cursors - www.cadcobol.com.br



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

Cursors

Se um programa emitir uma instrução SELECT ... INTO para recuperar várias linhas ao mesmo tempo, isso resultará em um erro.

No entanto, o DB2 possui um mecanismo, chamado cursor, que permite que um aplicativo recupere um conjunto de linhas e depois processe o conjunto, uma linha por vez.

Funções do Cursor

Podemos assumir que o DB2 constrói uma tabela de resultados para conter todas as linhas recuperadas executando uma instrução SELECT.

O DB2 usa um cursor para disponibilizar as linhas da tabela de resultados para o programa de aplicativo.
Um cursor identifica a linha atual da tabela de resultados.
Quando você usa um cursor, o programa pode recuperar cada linha seqüencialmente da tabela de resultados até o final dos dados (ou seja, a condição não encontrada SQLCODE = 100).
A instrução SELECT usada deve estar dentro de uma instrução DECLARE CURSOR e não pode incluir uma cláusula INTO.
A instrução DECLARE CURSOR define e nomeia o cursor, identificando o conjunto de linhas a serem recuperadas com a instrução SELECT do cursor.

A tabela de resultados é processada como um conjunto de dados seqüenciais.
O cursor deve ser aberto (com uma instrução OPEN) antes que qualquer linha seja recuperada.
Uma instrução FETCH é usada para recuperar a linha atual do cursor.
FETCH pode ser executado repetidamente até que todas as linhas tenham sido recuperadas.
Quando a condição de fim de dados ocorre, o cursor deve ser fechado com uma instrução CLOSE.

Um programa pode ter vários cursores.
Cada cursor requer sua própria instrução:

  • DECLARE CURSOR para definir o cursor.
  • Instruções OPEN e CLOSE para abrir e fechar o cursor.
  • Instrução FETCH para recuperar linhas do cursor's tabela de resultados.

As declarações para variáveis de host que são referenciadas em uma instrução DECLARE CURSOR devem preceder a instrução DECLARE CURSOR.
A instrução DECLARE CURSOR deve preceder qualquer instrução que faça referência ao cursor.

Você pode usar os cursores para FETCH, UPDATE ou DELETE uma linha de uma tabela, mas não pode usá-los para inserir uma linha em uma tabela.