Olá!
Após as postagens de apresentação do fluxo dos dados da utilização de uma instrução Select no COBOL, e também da declaração de um Cursor (as duas postagens anteriores). Temos, então, uma base para codificar um programa COBOL que retorne mais de um registro ao pesquisar informações no banco de dados (DB).
Para reforçar: quando pretendemos executar uma instrução SQL que retorne dois ou mais registros de uma consulta ao DB, é necessário utilizamos está instrução na declaração de um Cursor.
Assim, em código COBOL a ideia básica para utilizamos Cursor, é:
- Abrir o Cursor
- OPEN CURSOR - A abertura do cursor é o passo que executa a instrução SQL contida na declaração do Cursor. Ou seja, quando realizado o OPEN Cursor, o Select do mesmo é executado, assim gerando uma tabela temporária de resposta.
- Ler a tabela temporária de resposta
- FETCH CURSOR - Após a abertura do Cursor, temos os registros retornados da consulta na tabela temporária, e para ler/manipular os dados desta tabela executamos o comando Fetch no Cursor que ler o registro e movimenta os dados para as variáveis COBOL.
- Fechar o Cursor
- CLOSE CURSOR - Ao termino da leitura dos dados da tabela temporária fechamos o Cursor. Processo que encerrar o uso do Cursor, e limpa (apaga) a tabela temporária.
Abaixo é apresentado a tabela para a construção do código COBOL de exemplo:
PESSOA | |||
CD_PESSOA | NOME | SOBRENOME | IDADE |
1 | Felipe | Barbosa | 23 |
2 | Ana | Vieira | 20 |
3 | João | Santos | 19 |
4 | Aline | Silva | 21 |
5 | Maira | Dantas | 25 |
O código de exemplo logo abaixo, tem como objetivo mostrar todos os nomes cadastrados na tabela PESSOA. Então, o código tem que consultar os nomes no campo NOME da tabela PESSOA, e apresentar (display) estes. Segue o código COBOL:
Assim, os pontos chaves do código, são:
- LOCAL-STORAGE:
- Declaração de variáveis para realizar o controle de leitura do Cursor, essas variáveis auxiliam a verificar se o Cursor está aberto, e se o processo de laço de repetição para leitura está no fim.
- Declaração de variáveis para receber os dados da leitura do cursor.
- Declaração do Cursor CURSOR-NOME com a instrução SQL para consultar os nomes.
- Inclusão da biblioteca SQLCA (área de comunicação do SQL, mais informações clique aqui)
- PROCEDURE DIVISION:
- Section 10000-ABRE-CURSOR-NOME, que realiza a abertura (OPEN) do Cursor.
- Section 20000-LER-CURSOR-NOME, responsável por realizar a leitura (FETCH) do Cursor (tabela temporária de resposta da execução do cursor).
- Laço de repetição para mostrar o nome do registro lido, e ler o próximo registro do Cursor.
- Section 300000-FECHA-CURSOR-NOME, encerra (CLOSE) o Cursor.
Note que neste código foi empregado todo assunto apresentado neste e nos dois posts anteriores.
Enfim, com este exemplo prático, foi formulado um código simples que contém os conceitos fundamentais para a execução de uma instrução Select que retorne como resultado mais de um registro do DB. De modo que de acordo com a necessidade este exemplo pode ser útil para criar um código mais elaborado.
Consultar a relação de Termos e Abreviaturas acesse aqui.
FELIPE BARBOSA FERREIRA
FELIPE BARBOSA FERREIRA
Até o próximo post!
Nenhum comentário:
Postar um comentário