Com o início das postagens no blog Experiência SQL, começo também as postagens de demonstração da utilização de SQL no COBOL neste blog.
O modelo de tabela do banco de dados (DB) usado para esse post:
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 |
Então, temos acima a tabela denominada de PESSOA, com 4 campos: CD_PESSOA, NOME, SOBRENOME e IDADE. Contendo 5 registros. De modo que a chave (key - FK) desta tabela é o campo CD_PESSOA.
Assim, se for selecionado o nome de uma pessoa na tabela PESSOA para o código de pessoa igual a 1, deve ser retornado "Felipe".
Ou seja, em código SQL: SELECT NOME FROM PESSOA WHERE CD_PESSOA = 1.
Para que um código SQL seja compreendido em código COBOL, é necessário que o SQL esteja entre os comandos EXEC SQL e END-EXEC. Exemplo:
EXEC SQL
SELECT NOME
INTO :GDA-NM-PSS
FROM PESSOA
WHERE CD_PESSOA = 1
END-EXEC.
Onde, INTO :GDA-NM-PSS, é onde será armazenado o valor retornado pela execução do SQL.
Segue o exemplo do código de um programa COBOL com o SQL de exemplo apresentado.
A execução do código apresentado:
- Executa o SQL Select do NOME na tabela PESSOA para o registros que possua o CD_PESSOA = 1.
- Se o SQL for executado normalmente, o retorno será um registro, e o nome que foi selecionado será armazenado dentro da variável COBOL GDA-NM-PSS.
- Realiza um Evaluate do SQLCODE para verificar se a execução do comando SQL foi normal. Caso não tenha encontrado o registro para a condição (WHERE) ou tenha acontecido outro problema de execução é acionado o erro.
- Mostra a mensagem Nome cadastrado: valor-variável.
A resposta final da execução desse programa, é: Nome cadastrado: Felipe.
Observações:
- Para que um programa COBOL execute as instruções SQL é necessário fazer a inclusão da biblioteca SQLCA. Para mais informações desta biblioteca clique aqui.
- Para ver os campos que compõem a biblioteca SQLCA, clique aqui.
- É uma boa pratica sempre após a execução de um EXEC SQL, realizar a verificação do SQLCODE, como forma verificar a execução da instrução SQL.
- SQLCODE = +100, significa "que não há registros para a condição do SQL".
Então, para verificar se a execução de um comando SQL no COBOL ocorreu normalmente, veja se o SQLCODE está igual a ZERO, se não estiver é porque aconteceu uma exceção na execução do comando. Neste código a exceção de SQLCODE = +100 foi tratada para informar que não existe dados na base de dados para a condição do Select.
Como realizar um Select com a condição da instrução SQL recebendo um valor dinâmico? Veja no próximo post!
Até o próximo post!