Translate

quarta-feira, 14 de fevereiro de 2007

O que é SQL no Mainframe?

 

Bellacosa Mainframe o que é SQL Mainframe

O que é SQL no Mainframe?

SQL significa:

Structured Query Language

É a linguagem usada para acessar e manipular dados armazenados em bancos relacionais, principalmente o:

  • DB2 for z/OS

  • IMS SQL

  • Db2 Distributed

No ambiente mainframe, SQL é a ponte entre os programas COBOL e os dados armazenados no banco.


Definição simples

SQL é:

a linguagem utilizada para consultar, incluir, alterar e remover dados em bancos de dados.

Sem SQL, um programa COBOL não conseguiria acessar diretamente uma tabela DB2.


Analogia simples

Imagine uma biblioteca gigante.

O DB2 é a biblioteca.

O SQL é o idioma usado para conversar com o bibliotecário.

Você pode dizer:

Me mostre todos os clientes.

ou

Atualize o saldo deste cliente.

Onde SQL é usado?

Principalmente em:

  • COBOL

  • CICS

  • Batch

  • Java

  • PL/I

  • REXX

  • Stored Procedures


SQL e DB2

Fluxo simplificado:

Programa COBOL
       ↓
      SQL
       ↓
      DB2
       ↓
     Dados

Principais comandos SQL

SELECT

Consulta dados.

SELECT *
FROM CLIENTES;

SELECT com filtro

SELECT NOME,
       SALDO
FROM CLIENTES
WHERE SALDO > 1000;

INSERT

Inclui registros.

INSERT INTO CLIENTES
VALUES
(1001,'JOAO SILVA',5000);

UPDATE

Atualiza registros.

UPDATE CLIENTES
SET SALDO = 8000
WHERE ID = 1001;

DELETE

Remove registros.

DELETE
FROM CLIENTES
WHERE ID = 1001;

SQL dentro do COBOL

No mainframe normalmente usamos:

Embedded SQL


Exemplo

EXEC SQL

   SELECT NOME
     INTO :WS-NOME

     FROM CLIENTES

    WHERE ID = :WS-ID

END-EXEC.

O que é EXEC SQL?

Indica ao pré-compilador DB2 que aquele trecho contém comandos SQL.


Host Variables

Variáveis COBOL utilizadas pelo SQL.


Exemplo

01 WS-ID      PIC 9(5).
01 WS-NOME    PIC X(30).

Uso:

WHERE ID = :WS-ID

O ":" identifica uma Host Variable.


SQLCODE

Após cada comando SQL o DB2 retorna um código.


Exemplo

IF SQLCODE = 0

SQLCODE mais comuns

SQLCODESignificado
0Sucesso
+100Registro não encontrado
-803Chave duplicada
-305Valor nulo
-911Deadlock
-904Recurso indisponível

SQLCA

Área de comunicação entre COBOL e DB2.


Inclusão

EXEC SQL
   INCLUDE SQLCA
END-EXEC.

SQLCA contém

  • SQLCODE

  • SQLSTATE

  • mensagens

  • estatísticas


O que é Cursor?

Quando um SELECT retorna várias linhas.


Exemplo

SELECT *
FROM CLIENTES

Pode retornar:

JOAO
MARIA
CARLOS
ANA

Cursor resolve isso

Fluxo:

DECLARE
    ↓
OPEN
    ↓
FETCH
    ↓
FETCH
    ↓
FETCH
    ↓
CLOSE

Exemplo

DECLARE C1 CURSOR FOR

SELECT NOME
FROM CLIENTES

FETCH

FETCH C1
INTO :WS-NOME

Lê uma linha por vez.


COMMIT

Confirma alterações.

COMMIT;

ROLLBACK

Desfaz alterações.

ROLLBACK;

Exemplo prático

UPDATE SALDO
      ↓
COMMIT

Grava definitivamente.


Exemplo erro

UPDATE SALDO
      ↓
ABEND
      ↓
ROLLBACK

Volta ao estado anterior.


SQL Estático

Mais comum em COBOL.


Exemplo

EXEC SQL
   SELECT ...
END-EXEC

Conhecido na compilação.


SQL Dinâmico

Montado em tempo de execução.


Exemplo

MOVE 'SELECT * FROM CLIENTES'
TO WS-COMANDO

Muito usado em ferramentas administrativas.


Processo de compilação

COBOL + SQL
      ↓
Pré-compilador DB2
      ↓
Compilador COBOL
      ↓
BIND
      ↓
Package
      ↓
Execução

O que é BIND?

Gera os objetos que permitem ao DB2 executar o SQL.


Ferramentas SQL famosas no Mainframe

  • SPUFI

  • DSNTEP2

  • QMF

  • Db2 Admin Tool

  • Data Studio


SQL x QSAM

SQL

Procure cliente 1000

DB2 encontra.


QSAM

Registro 1
Registro 2
Registro 3
...
Registro 1000

Leitura sequencial.


Vantagens do SQL

✅ Fácil leitura

✅ Menos código COBOL

✅ Acesso rápido aos dados

✅ Relacionamentos entre tabelas

✅ Alta produtividade


Curiosidades

1. SQL foi criado na IBM na década de 1970

2. O DB2 foi um dos primeiros bancos comerciais a usar SQL

3. Milhões de linhas COBOL executam SQL diariamente

4. Grande parte das transações bancárias depende de SQL no DB2


Resumo rápido

ComandoFunção
SELECTConsulta
INSERTInclusão
UPDATEAlteração
DELETEExclusão
COMMITConfirma
ROLLBACKDesfaz
CURSORPercorre linhas
FETCHLê linha
SQLCARetorno SQL
SQLCODECódigo de retorno

Conclusão

SQL é a linguagem que permite aos programas COBOL, CICS e aplicações do ambiente IBM Z acessar bancos de dados DB2. Ele é um dos pilares do processamento transacional moderno, tornando possível consultar, inserir, atualizar e excluir dados de forma segura, rápida e eficiente no mainframe.


Sem comentários:

Enviar um comentário