sexta-feira, 12 de agosto de 2016

SQL - Fluxo de dados Select / DB

Olá!

Quando é executado uma instrução Select que está em uma rotina COBOL para selecionar as informações que estão no banco de dados (DB), é importante ter em mente o fluxo que é realizado para que os dados sejam selecionados. Pois, para instruções avançadas de código, muito da otimização dessas depende de como os dados estão sendo processados.

Na imagem abaixo é apresentado o fluxo de dados, desde a requisição do usuário na camada de apresentação, até a resposta dos dados encontrados no DB. O inicio do fluxo de dados que ocorre entre as camadas de processamento está detalhado no post: 

Fluxo COBOL Select DB Felipe Barbosa Ferreira

O fluxo detalhado:
  1. O fluxo é iniciado a partir do momento que o usuário realiza uma requisição na camada de apresentação.
  2. Rotina-A da camada de controles realiza as regras negociais, e requisita a Rotina-B com o propósito de pesquisar os dados no banco de dados.
  3. Rotina-B executa a instrução SQL para consultar os dados no DB, nos passos:
    1. Executa a instrução Select;
    2. Se SQL executado com sucesso, é retornado uma tabela temporária com os registros encontrados;
    3. Para que o COBOL leia/transfira as informações que estão na tabela temporária para variáveis COBOL, é executado o comando Fetch para fazer a leitura de cada registro desta tabela e mover os dados para as variáveis COBOL.
  4. Após realizar a leitura de todos os registros, a Rotina-B envia a resposta da sua execução para a Rotina-A.
  5. Que por sua vez, a Rotina-A continua o seu processamento, e no final envia a sua resposta para a camada de apresentação.
Assim, no passo 3, nota-se que é onde todo o processamento para realizar uma consulta/leitura no DB é feito. Sendo que para o Select que retornar mais de um registro, é necessário a declaração de CURSOR, e também de uma lógica para realizar um laço de repetição (loop Fetch +1) com o objetivo de ler cada registro retornado da resposta do SQL.

Caso o SQL da rotina COBOL seja um Select simples que retorne apenas um registro (exemplo desta instrução foi apresentado no post: SQL - Select simples). A tabela de resposta irá conter apenas um registro, então, não sendo necessário a declaração de CURSOR e loop para leitura do resultado do SQL, conforme o código de exemplo do post citado.

Quando, não haver resposta para o Select executado, a tabela temporária será retornada vazia. Assim, quando realizado a leitura nesta tabela, será retornado que não há mais registros a serem lidos (SQLCODE +100).

Nos próximos posts será demonstrado a declaração de Cursor, e também o código COBOL com o Select que possui dois ou mais registros de repostas (Cursor), ou seja, o exemplo prático do fluxo de dados apresentado na imagem acima.

Consultar a relação de Termos e Abreviaturas acesse aqui.
Felipe Barbosa Ferreira

Até o próximo post!

Nenhum comentário:

Postar um comentário