Sei sulla pagina 1di 79

DB2 – Banco de Dados

ÍNDICE

1. Objetivo...................................................................................................................4
2. Introdução................................................................................................................5
3. SGBD/DBMS..........................................................................................................6
4. SQL..........................................................................................................................6
5. O QUE É DB2?.......................................................................................................7
6. Modelo Relacional...................................................................................................8
7. Modelo Não Relacional...........................................................................................9
8. Integridade de Referência......................................................................................10
9. Banco de Dados.....................................................................................................11
10. Aplicações...........................................................................................................11
11. TABELA.............................................................................................................12
12. Linha...................................................................................................................13
13. Coluna.................................................................................................................13
14. Observações........................................................................................................13
15. View....................................................................................................................14
DB2 – Banco de Dados

16. Índice..................................................................................................................14
17. Chave Primária...................................................................................................15
18. Chave Estrangeira...............................................................................................15
19. Exec Sql e End-Exec...........................................................................................16
20. SQLCA...............................................................................................................17
21. Variáveis SQLCA...............................................................................................18
22. Dclgen.................................................................................................................19
23. Tipos de Dados....................................................................................................20
24. VARIÁVEIS INTERNAS DO DB2...................................................................21
25. Variáveis Host.....................................................................................................22
26. QUERY (QMF) ou via JCL (sysout)..................................................................23
27. Select – Where Numérico...................................................................................24
28. Select – Where Alfanumérico.............................................................................25
29. Select – Where Função DATA/HORA/TIMESTAMP........................................26
30. Select – Where NULO........................................................................................28
31. Indicador de nulidade - WORK..........................................................................30
32. Indicador de nulidade – VALUE.........................................................................31
33. OPERADORES DE COMPARAÇÃO NO WHERE.........................................32
34. Operadores para múltiplas condições.................................................................33
35. Operador IN........................................................................................................34
36. Operador BETWEEN.........................................................................................36
37. LIKE...................................................................................................................38
38. FUNÇÕES DE COLUNA..................................................................................40
39. FUNÇÃO DE COLUNA - COUNT (*)..............................................................41
40. FUNÇÃO DE COLUNA - MAX........................................................................43
41. FUNÇÃO DE COLUNA - MIN.........................................................................44
42. FUNÇÃO DE COLUNA - AVG.........................................................................45
43. FUNÇÃO DE COLUNA - SUM........................................................................46
44. INSERT...............................................................................................................47
45. UPDATE.............................................................................................................48
46. DELETE.............................................................................................................49
47. Tratamento de Cursores......................................................................................50
48. Declare Cursor....................................................................................................51
49. Open Cursor........................................................................................................52
50. Fetch Cursor........................................................................................................53
51. Close Cursor.......................................................................................................54
52. ORDER BY........................................................................................................55
53. GROUP BY.........................................................................................................56
54. SELECT DISTINCT...........................................................................................57
55. CURSOR – FOR UPDATE OF..........................................................................58
56. JOIN....................................................................................................................59
57. COMMIT............................................................................................................60
58. ROLLBACK.......................................................................................................61
ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI
-2-
DB2 – Banco de Dados

59. CURSOR WITH HOLD.....................................................................................62


60. EVITAR..............................................................................................................63
61. RECOMENDAÇÕES.........................................................................................64
62. UTILITÁRIOS....................................................................................................65
63. BIND...................................................................................................................65
64. TABLESPACE....................................................................................................65
65. SQLCODE’S......................................................................................................66

1. Objetivo

Capacitar O Aluno a Manusear o Banco de Dados DB2 Utilizando Comandos SQL.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


-3-
DB2 – Banco de Dados

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


-4-
DB2 – Banco de Dados

2. Introdução

Este Manual Oferece uma Visão Geral de Comandos SQL, Conceitos e as Melhores Práticas
de Manipulação de Dados no Banco de Dados DB2.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


-5-
DB2 – Banco de Dados

3. SGBD/DBMS
Um SGBD (Sistema de Gerenciamento de Banco de Dados) ou DBMS (Data Base
Management Sistem) é o software responsável pelo gerenciamento (armazenamento e
recuperação) dos dados no Banco de Dados, em outras palavras é uma coleção de
programas que permitem ao usuário definir, construir e manipular Bases de Dados para as
mais diversas finalidades.

4. SQL
Structure Query Linguage (SQL) representa um conjunto de comandos responsáveis pela
definição das tabelas, comandos e atualizações dos dados em um SGDB, está separada
em 3 (três) grupos.

Comandos DDL (Data Definition Language)

Comandos DML (Data Manipulation Language)

Comandos CONTROL (Utilizado para administrar a segurança dos Recursos DB2)

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


-6-
DB2 – Banco de Dados

5. O QUE É DB2?

O DATABASE2 ou DB2, como é mais comumente chamado, é um entre muitos produtos


para banco de dados oferecidos pela IBM.

O DB2 é um sistema de gerencia de banco de dados relacional projetado para o ambiente


de sistemas de grande porte.

DB2
DB2
DB2
DB2 DB2

DB2

DB2
DB2
DB2
DB2
DB2
DB2

DB2
DB2 DB2 DB2 DB2
DB2
DB2 DB2 DB2 DB2

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


-7-
DB2 – Banco de Dados

6. Modelo Relacional
Características:

1) Independência dos dados

2) Acesso fácil aos dados através de uma linguagem específica (SQL)

3) Acesso interativo

4) Acesso via programas de aplicação

5) Permite o processamento com conjunto de dados

6) Permite a utilização de conceitos matemáticos de conjuntos: (união, intercessão,


diferença)

7) O resultado de um acesso é uma tabela de dados

8) Fácil manutenção das bases de dados

9) Maior autonomia ao usuário

10) Aumento de produtividade

11) Maior flexibilidade no tratamento dos dados

12) Aumenta a segurança e integridade das informações

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


-8-
DB2 – Banco de Dados

7. Modelo Não Relacional


Características:

1) Muitas informações sobre armazenamento físico

2) Acesso pouco flexível aos dados

3) Comandos de acesso não trabalham com conjunto de dados

4) Menor segurança e integridade das informações

5) Maior dificuldade na alteração da base de dados

6) Baixa produtividade

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


-9-
DB2 – Banco de Dados

8. Integridade de Referência
Garante que qualquer valor apontado pela chave estrangeira tenha um valor
correspondente na chave primaria à qual está associada.

Esta integridade de referência é implementada no DB2 via DLL (Instruções de Definição


de Objetos na Linguagem SQL).

No DB2 a integridade de referência obedece as seguintes regras:

Uma chave primária tem valor único e não nulo.

Uma chave estrangeira é nula ou tem valor correspondente na chave primária. Tanto na
inserção como na atualização de linhas, o DB2 força a observação destas regras.

Todas as Tabelas associadas entre si, via regra de integridade de referencia, formam um
conjunto chamado de estrutura referencial ou referencial structure.

Uma tabela com chave primária definida é chamada de parent table ou tabela mãe.

Uma tabela com chave estrangeira definida é chamada de dependent table ou tabela
dependente.

Uma linha de uma parent table é chamada de parent row ou linha mãe se existir pelo
menos uma linha na tabela dependente como chave estrangeira correspondente a sua
chave primária.

Uma linha de uma dependent table é chamada de dependent row ou linha dependente se
existir uma linha mãe com valor de chave primária correspondente a da sua chave
estrangeira, ou seja, a chave estrangeira não deve ter valor nulo para ser uma linha
dependente.

Na eliminação (DELETE) de linhas da tabela mãe, podem ocorrer situações conforme a


regra de deleção estabelecida pela chave estrangeira.

CASCADE: Regra onde todas as linhas dependentes são eliminadas juntamente com a
mãe.

SET NULL: Regra onde as chaves estrangeiras da linha dependentes são atualizadas com
valor nulo após eliminação da mãe.

RESTRICT: Regra onde a eliminação da linha mãe é impedida. Neste caso somente as
linhas que não são mães podem ser eliminadas.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 10 -
DB2 – Banco de Dados

9. Banco de Dados

Um conjunto de tabelas, nas quais estão armazenados os dados, possibilitando um


armazenamento e manipulação de dados mais eficiente e não redundante.

10. Aplicações

O DB2 pode ser acessado através do IMS, CICS, TSO, e Jobs (Query) BATCH
simultaneamente.

Dados que estiverem em IMS/DM (antigo IMS/DB) podem ser migrados para o DB2.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 11 -
DB2 – Banco de Dados

11. TABELA

A estrutura fundamental de um banco de dados relacional, na qual são armazenadas


linhas (registros) e colunas (campos).

Os dados são normalmente sobre uma determinada categoria de assuntos, como por
exemplo, funcionários ou peças.

Ela é constituída de um número fixo de colunas e um N número de linhas.

Tabela(Arquivo) de Empregados

Arquivo convencional (analogia) Relacional______

Arquivo Tabela
Registro Linha
Campo Coluna

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 12 -
DB2 – Banco de Dados

12. Linha
Uma coleção de dados sobre uma pessoa, um lugar, um evento ou algum outro item.

Um registro é informado pôr várias colunas (campos).

13. Coluna
É a menor unidade de informação.

Ela pode possuir tipos de dados como veremos mais adiante.

14. Observações

 Uma coluna contém o mesmo tipo de dado em todas as linhas


(numérico/caractere/tamanho).

 Toda coluna possui um nome único na tabela.

 Uma linha é a menor unidade para inserção e remoção numa tabela, pode conter
colunas com diferentes tipos de dados, e não possui nome de coluna em
duplicidade.

 Um acesso pode ser válido para uma ou mais linhas, dependendo da condição.

 Podemos acessar todas as linhas, algumas ou uma única linha dependendo da


condição.

 Podemos acessar todas as colunas, algumas ou apenas uma única coluna.

 Podemos copiar dados de uma Tabela para outra.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 13 -
DB2 – Banco de Dados

15. View

É uma visão lógica, permitindo a representação de dados de uma ou mais tabelas como
sendo uma outra Tabela.

Nela podemos demonstrar determinadas linhas e colunas de uma ou mais tabelas.

Sua utilização em nada difere com a de uma tabela.

Conforme o caso, uma VIEW pode ser somente para leitura.

16. Índice
É um conjunto ordenado de ponteiros para dados de uma tabela.

Pode ser formado pôr mais de uma coluna.

Sua criação é basicamente por questão de desempenho (performance).

Estes são armazenados separadamente das Tabelas, o usuário não tem acesso a eles.

Quando o índice é único, ele força a unicidade dos dados através dos valores de uma ou
mais colunas escolhidas como chave única. (Chave Primária/Primary Key).

É dividido em 3 tipos:

 Unique: Criado a partir da chave primaria, não permitindo a inclusão de linhas


duplicadas, ou seja, força a unicidade dos dados através dos valores de uma coluna
especificada como chave única.

 Cluster: A seqüência Física das linhas procura estabelecer à seqüência das


entradas do Índice. Existem utilitários que reorganizam um tablespace

 Normal

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 14 -
DB2 – Banco de Dados

17. Chave Primária (PK)

A chave primária é um campo ou combinação de campos que identifica cada linha de uma
tabela, exclusivamente.

Ela é índice principal para uma tabela e é utilizada para associar dados entre as tabelas.

Embora não obrigatória, a chave primária é altamente recomendada.

Ela aumenta a velocidade de execução da recuperação de dados e possibilita a definição


das relações padrões entre as tabelas.

A chave primária não pode possuir valores repetidos, não pode ser atualizada e nem
possuir um valor NULO.

18. Chave Estrangeira (FK)

Uma ou mais colunas da tabela que indicam a coluna ou as colunas da chave em outra
tabela.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 15 -
DB2 – Banco de Dados

19. Exec Sql e End-Exec


São utilizados em todo programa Cobol que apresente comandos SQL.

Devem ser definidos a partir da coluna 12.

 Definir na Work

EXEC SQL
INCLUDE SQLCA
END-EXEC.

EXEC SQL
INCLUDE TABELA1
END-EXEC.

EXEC SQL
INCLUDE TABELA2
END-EXEC.

 Criar na Procedure

EXEC SQL
comando
END-EXEC.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 16 -
DB2 – Banco de Dados

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 17 -
DB2 – Banco de Dados

20. SQLCA

EXEC SQL
INCLUDE SQLCA
END-EXEC.
Modo que deve ser declarado na Work internamente no programa.

/**-----------------------------------------------------------***
*** AREA DE TRATAMENTO DAS BOOKS DB2 ***
***-----------------------------------------------------------***
*
*****EXEC SQL
***** INCLUDE SQLCA
*****END-EXEC.
01 SQLCA.
05 SQLCAID PIC X(8).
05 SQLCABC PIC S9(9) COMP-4.
05 SQLCODE PIC S9(9) COMP-4.
05 SQLERRM.
49 SQLERRML PIC S9(4) COMP-4.
49 SQLERRMC PIC X(70).
05 SQLERRP PIC X(8).
05 SQLERRD OCCURS 6 TIMES
PIC S9(9) COMP-4.
05 SQLWARN.
10 SQLWARN0 PIC X.
10 SQLWARN1 PIC X.
10 SQLWARN2 PIC X.
10 SQLWARN3 PIC X.
10 SQLWARN4 PIC X.
10 SQLWARN5 PIC X.
10 SQLWARN6 PIC X.
10 SQLWARN7 PIC X.
05 SQLEXT.
10 SQLWARN8 PIC X.
10 SQLWARN9 PIC X.
10 SQLWARNA PIC X.
10 SQLSTATE PIC X(5).

 Book extraído de uma compilação.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 18 -
DB2 – Banco de Dados

21. Variáveis SQLCA

05 SQLCODE PIC S9(9) COMP-4.

A cada acesso no db2, é alimentado pelo sistema operacional um código de retorno do


acesso.

49 SQLERRMC PIC X(70).

Informações em forma de texto sobre algum erro que tenha acontecido durante o
processamento.

05 SQLERRD OCCURS 6 TIMES

SQLERRD (3) Contém a quantidade de linhas que sofreram alteração no último comando
SQL.
05 SQLWARN.
10 SQLWARN0 PIC X.
10 SQLWARN1 PIC X.
10 SQLWARN2 PIC X.
10 SQLWARN3 PIC X.
10 SQLWARN4 PIC X.
10 SQLWARN5 PIC X.
10 SQLWARN6 PIC X.
10 SQLWARN7 PIC X.

Erros “W”, Warning.


IF SQLCODE NOT EQUAL +000 OR
SQLWARN0 EQUAL ’W’
ABENDAR
END-IF.

SQLWARN1 : string assinalada á variável HOST foi truncada

SQLWARN2: nulos ignorados no cálculo de uma função de coluna

SQLWARN3: número de colunas maior que o de variáveis HOST

SQLWARN4: UPDATE ou DELETE “PREPARED” não apresenta


cláusula WHERE.

SQLWARN5: instrução SQL/DS inválida no DB2

SQLWARN6: valor de data ou TIMESTAMP corrigidas de um valor inválido resultante de uma


operação aritmética.

10 SQLSTATE PIC X(5).

Seria uma espécie de 2º. Sqlcode, caso você não consiga identificar que tipo de erro está
acontecendo no seu programa, através do sqlcode, verifique o sqlstate.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 19 -
DB2 – Banco de Dados

22. Dclgen
 O DCLGEN é um programa que gera uma codificação de declaração de
variáveis HOST correspondentes às colunas de uma dada tabela.
******************************************************************
* DCLGEN TABLE(DB2.SAGTBS02_CURSOS) *
* LIBRARY(DES.DB2.DCLGEN(SAGTBS02)) * SAGTBS02
* ACTION(REPLACE) *
* LANGUAGE(COBOL) * Nome Lógico da Tabela
* STRUCTURE(SAGTBS02) *
* APOST * DB2
* ... IS THE DCLGEN COMMAND THAT MADE THE FOLLOWING STATEMENTS *
******************************************************************
EXEC SQL DECLARE DB2.SAGTBS02_CURSOS TABLE
( CO_CURSO INTEGER NOT NULL,
NO_CURSO CHAR(25) NOT NULL,
DT_INCLUSAO DATE NOT NULL,
DT_ALTERACAO DATE, DB2.SAGTBS02_CURSOS
DT_EXCLUSAO DATE,
NO_TOPICO CHAR(15) NOT NULL, Nome Físico da Tabela DB2
NO_NIVEL CHAR(15) NOT NULL,
NO_OBJETIVO VARCHAR(150),
NO_DESTINA_SE CHAR(70) NOT NULL,
NO_PRE_REQUIS CHAR(70) NOT NULL,
NU_CARGA_HORA INTEGER NOT NULL,
IC_SEG CHAR(1),
IC_TER CHAR(1),
IC_QUA DATE CHAR(1),
IC_QUI Função CHAR(1), NOT NULL
IC_SEX DATA CHAR(1),
IC_SAB CHAR(1),
IC_DOM Formato DB2 CHAR(1), Indica que a variável host
DT_INICIO DATE NOT NULL, não aceitará conteúdo
DT_FIM DATE NOT NULL, nulo
NO_ANDAMENTO CHAR(35),
VR_CURSO_1 DECIMAL(15, 2) NOT NULL,
VR_CURSO_2 DECIMAL(15, 2) NOT NULL,
VR_CURSO_3 DECIMAL(15, 2) NOT NULL,
IC_SITUACAO CHAR(1)
) END-EXEC.
******************************************************************
* COBOL DECLARATION FOR TABLE DB2.SAGTBS02_CURSOS *
******************************************************************
01 SAGTBS02.
10 CO-CURSO PIC S9(9) USAGE COMP.
10 NO-CURSO PIC X(25).
10 DT-INCLUSAO PIC X(10).
10 DT-ALTERACAO PIC X(10).
10 DT-EXCLUSAO PIC X(10).
10 NO-TOPICO PIC X(15).
10 NO-NIVEL PIC X(15).
10 NO-OBJETIVO.
49 NO-OBJETIVO-LEN PIC S9(4) USAGE COMP.
49 NO-OBJETIVO-TEXT PIC X(150).
10 NO-DESTINA-SE PIC X(70).
10 NO-PRE-REQUISITOS PIC X(70).
10 NU-CARGA-HORA PIC S9(9) USAGE COMP.
10 IC-SEG PIC X(1). Variáveis HOST
10 IC-TER PIC X(1).
10 IC-QUA PIC X(1).
10 IC-QUI PIC X(1).
10 IC-SEX PIC X(1).
10 IC-SAB PIC X(1).
10 IC-DOM PIC X(1).
10 DT-INICIO PIC X(10).
10 DT-FIM PIC X(10).
10 NO-ANDAMENTO PIC X(35).
10 VR-CURSO-1 PIC S9(13)V9(2) USAGE COMP-3.
10 VR-CURSO-2 PIC S9(13)V9(2) USAGE COMP-3.
10 VR-CURSO-3 PIC S9(13)V9(2) USAGE COMP-3.
10 IC-SITUACAO PIC X(1).
******************************************************************

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 20 -
DB2 – Banco de Dados
* THE NUMBER OF COLUMNS DESCRIBED BY THIS DECLARATION IS 19 *
******************************************************************

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 21 -
DB2 – Banco de Dados

23. Tipos de Dados

 Numérico

SMALLINT Para valores inteiros de -32.768 a +32.767.

DECIMAL (P,S) Números decimais. Onde P é o tamanho total e S é a parte


decimal.

INTEGER Valores inteiros de -2.483.648 a +2.147.483.647.

 Alfanumérico

CHAR(N) String de caracteres, onde N é o comprimento.

VARCHAR (N) String de caracteres com tamanho variável, onde N é o tamanho


máximo (254 bytes)

LONG VARCHAR (N) String de caracteres com tamanho variável com mais de 254
bytes, onde N é o tamanho

 Função

DATE DD.MM.AAAA ( PIC X(010) )

TIME HH.MM.SS ( PIC X(008) )

TIMESTAMP AAAA-MM-DD-HH.MM.SS.NNNNNN ( PIC X(026) )

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 22 -
DB2 – Banco de Dados

24. VARIÁVEIS INTERNAS DO DB2


Abreviação Formato Date Formato Time
ISO YYYY-MM-DD HH.MM.SS
USA MM/DD/YYYY HH:MM (AM/PM)
EUR DD.MM.YYYY HH.MM.SS
JIS YYYY-MM-DD HH:MM:SS
Qualquer forma definida na Qualquer forma definida na
LOCAL
instalação instalação

Atenção
Para TIMESTAMP só há um formato externo:
YYYY-MM-DD-HH.MM.SS.NNNNNN

 Definir na Work
01 WS-DAT-DB2 PIC X(010) VALUE ’01.01.0001’.

 Criar na Procedure
EXEC SQL
SET :WS-DAT-DB2 = CURRENT DATE
END-EXEC.

 Formato: dd.mm.ssaa

 Definir na Work
01 WS-HOR-DB2 PIC X(008) VALUE ’00.00.00’.

 Criar na Procedure
EXEC SQL
SET :WS-HOR-DB2 = CURRENT TIME
END-EXEC.

 Formato: hh.mm.ss

 Definir na Work
01 WS-TIMESTAMP PIC X(026) VALUE SPACES.

 Criar na Procedure
EXEC SQL
SET :WS-TIMESTAMP = CURRENT TIMESTAMP
END-EXEC.

 Formato: ssaa-mm-dd-hh.mm.ss.nnnnnn

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 23 -
DB2 – Banco de Dados

25. Variáveis Host


É uma variável declarada no programa e que será utilizada no comando SQL.

Deve ser precedida por : (dois pontos) quando referenciada em um comando SQL.
Deve ser definida no programa no formato compatível com o tipo da coluna da tabela.

A include da tabela já define no programa os campos correspondentes a cada coluna


definida na tabela.

Normalmente os nomes das colunas da tabela possuem (underscore) e os nomes dos


campos possuem (hífen).

(_) – underscore.
(-) – hífen.

Ex. CODIGO_PROCESSO
:SAGTBS02.CODIGO-PROCESSO

Caso o seu programa trabalhe com tabelas que possuam alguma coluna com o mesmo
nome, na codificação da variável host no comando SQL, devem colocar como prefixo o
item de grupo a qual ela pertence na working-storage.

EX. :TABELA1.CODIGO-PROCESSO ( Tratamento de variáveis HOST )

Move CODIGO-PROCESSO OF TAB1 TO CODIGO-PROCESSO OF TAB2

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 24 -
DB2 – Banco de Dados

26. QUERY (QMF) ou via JCL (sysout)

O Query Management Facility é um gerador de relatórios que pesquisa tabelas


relacionais.

A memória do QMF é dividida em várias área, sendo as mais utilizadas:

 QUERY
 Entrada da instrução SQL

 DATA
 Resultado devolvido pelo DB2

 FORM
 Formato do relatório de Saída

 REPORT
 Relatório montado com base nos dados da área DATA e no formato especificado
em FORM.

O QMF trabalha também com relatórios Gráficos.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 25 -
DB2 – Banco de Dados

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 26 -
DB2 – Banco de Dados

27. Select – Where Numérico


Seleciona uma ou mais colunas de uma tabela (leitura de apenas um registro).

SELECT -> Define quais colunas serão selecionadas

INTO -> Define os campos que receberão as colunas selecionadas

FROM -> Define qual a tabela será acessada

WHERE -> Quais as condições de seleção (OPCIONAL)

 Exemplo de Where através de dado Numérico

+000->LINHA ENCONTRADA COM SUCESSO

+100->LINHA NÃO ENCONTRADA

-811-> (MAIS DE UMA LINHA ENCONTRADA PARA O MESMO WHERE(CHAVE))

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 27 -
DB2 – Banco de Dados

28. Select – Where Alfanumérico


Seleciona uma ou mais colunas de uma tabela (leitura de apenas um registro).

 Exemplo de Where através de dado Alfanumérico

+000->LINHA ENCONTRADA COM SUCESSO

+100->LINHA NÃO ENCONTRADA

-811-> (MAIS DE UMA LINHA ENCONTRADA PARA O MESMO WHERE(CHAVE))

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 28 -
DB2 – Banco de Dados

29. Select – Where Função DATA/HORA/TIMESTAMP


Seleciona uma ou mais colunas de uma tabela (leitura de apenas um registro).

 Exemplo de Where através de dado de Função (DATA/HORA/TIMESTAMP)

+000->LINHA ENCONTRADA COM SUCESSO

+100->LINHA NÃO ENCONTRADA

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 29 -
DB2 – Banco de Dados

-811-> (MAIS DE UMA LINHA ENCONTRADA PARA O MESMO WHERE(CHAVE))

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 30 -
DB2 – Banco de Dados

Seleciona uma ou mais colunas de uma tabela (leitura de apenas um registro).

 Exemplo de Where através de dado de Função (DATA/HORA/TIMESTAMP)

+000->LINHA ENCONTRADA COM SUCESSO

+100->LINHA NÃO ENCONTRADA

-811-> (MAIS DE UMA LINHA ENCONTRADA PARA O MESMO WHERE(CHAVE))

Obs: Para as Funções acima (DAY, MONTH, YEAR) as Variáveis HOST declaradas na Work
devem ter o formato S9(4) COMP.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 31 -
DB2 – Banco de Dados

30. Select – Where NULO


Dependendo de como uma tabela é definida, pode ser permitido que uma ou mais colunas
contenha itens de dados com valor nulo.

 Exemplo de Where através de dado NULO

+000->LINHA ENCONTRADA COM SUCESSO

+100->LINHA NÃO ENCONTRADA

-811-> (MAIS DE UMA LINHA ENCONTRADA PARA O MESMO WHERE(CHAVE))

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 32 -
DB2 – Banco de Dados

Dependendo de como uma tabela é definida, pode ser permitido que uma ou mais colunas
contenha itens de dados com valor NÃO nulo.

 Exemplo de Where através de dado NÃO NULO

+000->LINHA ENCONTRADA COM SUCESSO

+100->LINHA NÃO ENCONTRADA

-811-> (MAIS DE UMA LINHA ENCONTRADA PARA O MESMO WHERE(CHAVE))

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 33 -
DB2 – Banco de Dados

31. Indicador de nulidade - WORK

Indicada ausência de informação para a coluna na linha correspondente.

Um valor nulo não é zero nem branco, é um valor não informado.

Se a coluna estiver com conteúdo nulo, o DB2 colocará um valor negativo (-1) no campo
de tratamento de nulidade, caso contrário ele será valorizado com zeros (+0).

O formato de indicador de nulo deve ser S9(04) COMP.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 34 -
DB2 – Banco de Dados

32. Indicador de nulidade – VALUE

Indicada ausência de informação para a coluna na linha correspondente.

Um valor nulo não é zero nem branco, é um valor não informado.

A função VALUE retorna o valor assinalado quando a coluna for nula.

Caso o DB2 tente colocar um valor negativo no indicador de nulidade, e ele não foi
definido no comando SQL, o DB2 retornará um sqlcode =-305.

Pode-se ter numa condição do WHERE a nulidade de uma coluna:

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 35 -
DB2 – Banco de Dados

33. OPERADORES DE COMPARAÇÃO NO WHERE

Operadores Significado

= IGUAL

<> DIFERENTE

> MAIOR

>= MAIOR ou IGUAL

< MENOR

<= MENOR ou IGUAL

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 36 -
DB2 – Banco de Dados

34. Operadores para múltiplas condições

Operadores Significado

AND E

OR OU

Obs. Em Where que utilizarem AND e OR juntos, sempre fechar as condições com
parênteses.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 37 -
DB2 – Banco de Dados

35. Operador IN
O valor deve coincidir com algum elemento de uma lista.

O comando IN faz o mesmo efeito que o comando OR.

WHERE DEPT = 38
OR DEPT = 20
OR DEPT = 42

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 38 -
DB2 – Banco de Dados

Podemos utilizar também variáveis ao invés de se utilizar valores fixos, atentar para o
formato dos campos, os mesmos devem coincidir exatamente com o formato db2.

PODE-SE USAR: NOT IN

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 39 -
DB2 – Banco de Dados

36. Operador BETWEEN


Para selecionar um intervalo fechado de valores

É o mesmo que:

WHERE ANOS >= 9


AND ANOS <= 11

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 40 -
DB2 – Banco de Dados

Podemos utilizar também variáveis ao invés de se utilizar valores fixos, atentar para o
formato dos campos, os mesmos devem coincidir exatamente com o formato db2.

PODE-SE USAR: NOT BETWEEN

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 41 -
DB2 – Banco de Dados

37. LIKE
Para selecionar linhas que tenha determinados caracteres ou palavras no intervalo do
campo/string.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 42 -
DB2 – Banco de Dados

Select Fornecedor

From Tab.Fornecedores

Where Nome_Fornece LIKE ‘J%’

Traz como Resultado:

Jonas....
João....

Select Endereco

From Tab.Enderecos

Where Endereço LIKE ‘%Fran%’

Traz como Resultado:

Rua Francisco de Assis

Passarela Pedro Francisco

Avenida Francisco Morato

- O primeiro % especifica que qualquer número de caracteres de qualquer tipo poder


proceder “Fran”, e o segundo % especifica que qualquer número de caracteres pode
sucedê-lo.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 43 -
DB2 – Banco de Dados

38. FUNÇÕES DE COLUNA


São funções disponíveis que possibilitam tratamentos específicos quando associadas a
comandos SQL. As seguintes funções podem ser utilizadas com o comando SELECT.

Função Descrição
SUM Executa o somatório de colunas numéricas
AVG Obtém a media de colunas numéricas
MAX Procura o maior valor de uma coluna
MIN Procura o menor valor de uma coluna
COUNT Informa o numero de linha qualificadas
GROUP BY obtém valores agrupados por uma
característica definida. Todas as colunas
especificadas no GROUP BY formarão o
grupo.
HAVING Impõem uma condição ao agrupamento
definido. Equivale a clausula WHERE, mas
só pode ser usada com o GROUP BY
CHAR Converte o valor para um valor do tipo
string
DATE Converte o valor date em string
DAY Extrai o dia de um valor date o timestamp
DAYS Informa o numero de dias
DECIMAL Converte em valor decimal um valor
numérico
DIGITIS Extrai de um string de caracteres os
valores numéricos
FLOAT Converte na notação float um valor
numérico
ÉX Apresenta a notação hexadecimal de um
valor
HOUR Extrai a hora de um valor date ou
timestamp
INTEGER Converte em integer um valor numérico
LENGTH Informa o numero de caracteres de um
valor
MICROSECOND Informa os microssegundos de um
timestamp
MINUTE Informa os minutos de um timestamp ou
time
MONTH Informa o mês de um item date
SECOND Informa os segundos de um timestamp ou
time
SUBSTR Extrai uma parte de um campo char
TIME Converte em time um valor
VALUE Substitui valores nulos pelo valor fornecido
YEAR Extrai o ano de um item date ou timestamp

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 44 -
DB2 – Banco de Dados

39. FUNÇÃO DE COLUNA - COUNT (*)

Retorna em (QTDE) o numero de linhas que satisfaçam à condição WHERE.

Nulos não são contados.

 COUNT (Contador de Linhas encontradas na base)

Obs. Atentar para sql´s que contenham comandos de função como:

 COUNT (Contador de Linhas encontradas na base)

 MAX (Valor Máximo)

 MIN (Valor Mínimo)

 AVG (Calculo de Média)

 SUM (Sumariza Valores encontrados na base)

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 45 -
DB2 – Banco de Dados

, caso não encontre dados na base o sqlcode de retorno será -305 e não +100, como é o
caso do select comum ou fetch do cursor.

Atentar para retorno SQLCODE +100 e -305

 Tabela Vazia (Sem dados) – SQLCODE = (+100)

 Tabela Com Dados, porém não satisfazem o where – SQLCODE = (-305)

Desta forma, realizar o seguinte tratamento após o comando select

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 46 -
DB2 – Banco de Dados

40. FUNÇÃO DE COLUNA - MAX

Retorna o maior valor encontrado na base para linhas que satisfaçam à condição WHERE.

Em caso de campos Nulos devemos realizar o tratamento de nulidade.

 MAX (Valor Máximo)

Obs. Atentar para sql´s que contenham comandos de função como:

 COUNT (Contador de Linhas encontradas na base)

 MAX (Valor Máximo)

 MIN (Valor Mínimo)

 AVG (Calculo de Média)

 SUM (Sumariza Valores encontrados na base)

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 47 -
DB2 – Banco de Dados

, caso não encontre dados na base o sqlcode de retorno será -305 e não +100, como é o
caso do select comum ou fetch do cursor.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 48 -
DB2 – Banco de Dados

41. FUNÇÃO DE COLUNA - MIN

Retorna o menor valor encontrado na base para linhas que satisfaçam à condição WHERE.

Em caso de campos Nulos devemos realizar o tratamento de nulidade.

 MIN (Valor Mínimo)

Obs. Atentar para sql´s que contenham comandos de função como:

 COUNT (Contador de Linhas encontradas na base)

 MAX (Valor Máximo)

 MIN (Valor Mínimo)

 AVG (Calculo de Média)

 SUM (Sumariza Valores encontrados na base)

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 49 -
DB2 – Banco de Dados

, caso não encontre dados na base o sqlcode de retorno será -305 e não +100, como é o
caso do select comum ou fetch do cursor.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 50 -
DB2 – Banco de Dados

42. FUNÇÃO DE COLUNA - AVG

Retorna a Média de valores encontrados na base para linhas que satisfaçam à condição
WHERE.

Em caso de campos Nulos devemos realizar o tratamento de nulidade.

 AVG (Calculo de Média)

Obs. Atentar para sql´s que contenham comandos de função como:

 COUNT (Contador de Linhas encontradas na base)

 MAX (Valor Máximo)

 MIN (Valor Mínimo)

 AVG (Calculo de Média)

 SUM (Sumariza Valores encontrados na base)

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 51 -
DB2 – Banco de Dados

, caso não encontre dados na base o sqlcode de retorno será -305 e não +100, como é o
caso do select comum ou fetch do cursor.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 52 -
DB2 – Banco de Dados

43. FUNÇÃO DE COLUNA - SUM

Retorna a Sumarização de valores encontrados na base para linhas que satisfaçam à


condição WHERE.

Em caso de campos Nulos devemos realizar o tratamento de nulidade.

 SUM (Sumariza Valores encontrados na base)

Obs. Atentar para sql´s que contenham comandos de função como:

 COUNT (Contador de Linhas encontradas na base)

 MAX (Valor Máximo)

 MIN (Valor Mínimo)

 AVG (Calculo de Média)

 SUM (Sumariza Valores encontrados na base)

, caso não encontre dados na base o sqlcode de retorno será -305 e não +100, como é o
caso do select comum ou fetch do cursor.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 53 -
DB2 – Banco de Dados

44. INSERT

Insere (Grava) novas linhas em uma tabela.

SQLCODE`S :+000-> LINHA INSERIDA C/SUCESSO


-803 -> LINHA NÃO INSERIDA (CHAVE DUPLICADA)

Podemos Inserir linhas informando o conteúdo fixo na HOST

Podemos Inserir linhas informando o valor “ NULL “ , ou utilizar as variáveis para controle
de nulidade.

Podemos Inserir linhas informando funções de data, hora e timestamp.

 CURRENT DATE

 CURRENT TIME

 CURRENT TIMESTAMP
ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI
- 54 -
DB2 – Banco de Dados

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 55 -
DB2 – Banco de Dados

45. UPDATE

Atualiza valores de colunas.

SQLCODE`S : +000-> LINHA(S) ALTERADA C/SUCESSO


+100-> NENHUMA LINHA ENCONTRADA
-803 -> LINHA NÃO INSERIDA (CHAVE DUPLICADA)

Para atualizar(GRAVAR) a Coluna da Tabela com NULO devemos:

Mover -1 to WS-TP-PROC-NULL.

Caso Contrário

Mover +0 to WS-TP-PROC-NULL.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 56 -
DB2 – Banco de Dados

46. DELETE

Exclui (DELETA) linhas da tabela.

SQLCODE´S : +000-> LINHA(S) DELETA(S) C/SUCESSO


+100-> NENHUMA LINHA ENCONTRADA

Obs.: Na variável ( SQLERRD (3) ) contém a quantidade de linhas que sofreram


alteração no último comando SQL.

Essa variável, assim como o sqlcode e outros, encontra-se no include ( SQLCA ).

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 57 -
DB2 – Banco de Dados

47. Tratamento de Cursores

Caso o resultado de um SELECT tenha múltiplas linhas, o programa deve trabalhar com
um CURSOR.

Quando o programa executa o comando OPEN cursor, O DB2 executa o SELECT definido
no DECLARE CURSOR, e a tabela resultante fica presa, esperando pelo processamento.

O programa deve executar a instrução ´FETCH` para acessar as linhas selecionadas no


DECLARE CURSOR.

As variáveis HOST conterão os valores das colunas selecionadas da linha acessada.

No final do processamento do cursor deve-se realizar o comando CLOSE cursor.

Todo cursor deve ter o tratamento de abertura (open), leitura (fetch) e


fechamento (close).

Ao se processar um cursor utilizar a mesma lógica aplicada em arquivos


seqüenciais.

Abrir

Ler o primeiro

Tratar Vazio (SQLCODE = +100)

Criar um processamento até fim do db2 ( until sqlcode equal +100 )

Após esse processamento fechar o cursor

Não esqueça: caso a tabela esteja vazia, também feche o cursor.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 58 -
DB2 – Banco de Dados

48. Declare Cursor


Nome do Cursor
 Definir na Work
Definido pelo Programador

Obs. O declare cursor pode ser criado na work, ou se preferir na Procedure.

Caso seja definido na Procedure deve ser o primeiro comando a ser executado
antes o OPEN CURSOR

Em quase 100 % dos casos é declarado na work.

Todo cursor deve ter o tratamento:

 Abertura (open)

 Leitura (fetch)

 Fechamento (close)

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 59 -
DB2 – Banco de Dados

Nesta mesma ordem.

49. Open Cursor

 Criar um parágrafo na Procedure

Obs. A cada acesso ao banco de dados Db2 deve-se consistir o sqlcode, assim como é
realizado o tratamento de file-status em arquivo vsam/seqüenciais.

Open - IF SQLCODE NOT EQUAL +000


ABENDAR
END-IF.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 60 -
DB2 – Banco de Dados

50. Fetch Cursor

 Criar um parágrafo na Procedure

Obs. A cada acesso ao banco de dados Db2 deve-se consistir o sqlcode, assim como é
realizado o tratamento de file-status em arquivo vsam/seqüenciais.

Fetch - IF SQLCODE NOT EQUAL +000 and +100


ABENDAR
END-IF.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 61 -
DB2 – Banco de Dados

51. Close Cursor

 Criar um parágrafo na Procedure

Obs. A cada acesso ao banco de dados Db2 deve-se consistir o sqlcode, assim como é
realizado o tratamento de file-status em arquivo vsam/seqüenciais.

Close- IF SQLCODE NOT EQUAL +000


ABENDAR
END-IF.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 62 -
DB2 – Banco de Dados

52. ORDER BY
Classifica as linhas selecionadas através de um CURSOR.

Todas as colunas da cláusula ORDER BY devem aparecer no SELECT.

A cláusula ORDER BY classifica uma tabela resultante.

Deve ser SEMPRE a ÚLTIMA a aparecer em uma instrução SELECT.

DESC----> em ordem decrescente.

ASC------> em ordem crescente.

Podemos especificar colunas para o ORDER BY fornecendo um número que indica a


posição da mesma na cláusula SELECT.

ORDER BY 1, 2, 3

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 63 -
DB2 – Banco de Dados

53. GROUP BY
Agrupa linhas selecionadas através de um CURSOR, com conceito de quebra.

Geralmente utilizamos o GROUP BY para sumarizar valores ou quantidades de acordo com


as regras de negócio.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 64 -
DB2 – Banco de Dados

54. SELECT DISTINCT

Elimina linhas duplicadas.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 65 -
DB2 – Banco de Dados

55. CURSOR – FOR UPDATE OF

Atualiza uma ou mais linhas recuperadas através de CURSOR.

A atualização deve ser feita na linha que está sendo apontada pelo cursor especificado na
cláusula “WHERE CURRENT OF nome”.

A atualização via cursor não é obrigatória.

A instrução DECLARE não pode ter a cláusula “FOR UPDATE OF” se a instrução SELECT
contiver:

 ORDER BY
 GROUP BY
 DISTINCT
 UNION
 FUNÇÃO
 JOIN

 Definir na Work

EXEC SQL

DECLARE cursor1 CURSOR FOR

SELECT cod_func,
nome_func

FROM Db2prd.Cadastro_func

WHERE COD_FUNC IN ( 3, 5, 8)

FOR UPDATE OF nome_func

END-EXEC.

 Criar um parágrafo na Procedure

EXEC SQL

UPDATE db2prd. Cadastro _func

SET NOME_FUNC = :NOME-FUNC

WHERE CURRENT OF CURSOR1

END-EXEC.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 66 -
DB2 – Banco de Dados

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 67 -
DB2 – Banco de Dados

56. JOIN

É um relacionamento entre tabelas via dados comuns.

Todas as tabelas de um relacionamento devem ser definidas na cláusula FROM.

O relacionamento é feito através da cláusula WHERE.

EXEC SQL

SELECT A.COD_PRODUTO,
A.NOME_PRODUTO,
A.COD_FORNEC,
A.NOME_FORNEC

FROM DB2PRD.CAD_COMPRAS A,
DB2PRD.CAD_FORNEC B

WHERE A.COD_FORNEC = B.COD_FORNEC

END-EXEC.

Se não for definida na cláusula WHERE relacionamento entre as tabelas, será feito um
relacionamento NxN.

Dependendo da correspondência feita entre as tabelas, pode ser realizado relacionamento


de 1x1, 1xN, Nx1 e NXN.

Sendo que para cada relacionamento será retornado uma linha.

- O JOIN pode ser de uma tabela com ela mesma.

EXEC SQL DECLARE C-TABELA CURSOR FOR

SELECT DISTINCT
A.NU_GUIA,
A.NU_SEG

FROM TAB_GUIA A

WHERE A.NU_GUIA >= :WS-GUI-MIN


AND A.NU_GUIA <= :WS-GUI-MAX
AND A.NU_NSR =
( SELECT MAX(B.NU_NSR)
FROM TAB_GUIA B
WHERE A.CO_ENTDE_SNDCL_S01 = B.CO_ENTDE_SNDCL_S01
AND A.NU_GUIA = B.NU_GUIA )

ORDER BY NU_GUIA

OPTIMIZE FOR 250 ROWS

END-EXEC.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 68 -
DB2 – Banco de Dados

57. COMMIT

Valida todas as atualizações feitas até então.

Efetiva atualização de dados nas tabelas. (Insert, Update e Delete)

Indica fim de uma LUW

As páginas e/ou tablespaces presos são liberados

Todos os cursores abertos serão Fechados

 O cursor deve ser definido como cláusula WITH HOLD, para que não se perca o
posicionamento do Mesmo.

 Aplicar em Programas Batch

EXEC SQL COMMIT

END-EXEC.

 Aplicar em Programas On-Line

EXEC CICS SYNCPOINT

END-EXEC.

- Melhores Práticas

Ao Final do processamento de Programas que efetue atualizações em bases DB2 devemos


realizar o COMMIT.

Para Aplicações que manipulem milhões de registros, realizando atualizações em bases


DB2 devemos realizar o COMMIT com o conceito de Check Point.

Check Point - Realizar o COMMIT a cada 500 ou 1.000 registros processados, sempre
armazenar a ultima chave processada, para que no caso de abend seja feito o processo de
Restart .

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 69 -
DB2 – Banco de Dados

58. ROLLBACK

Desfaz todas as atualizações nas tabelas até o ultimo COMMIT executado.

(Insert, Update e Delete)

A LUW corrente será abandonada.

As páginas e/ou tablespaces presos são liberados

Todos os cursores abertos serão Fechados

 O cursor deve ser definido como cláusula WITH HOLD, para que não se perca o
posicionamento do Mesmo.

 Aplicar em Programas Batch

EXEC SQL ROLLBACK

END-EXEC.

 Aplicar em Programas On-Line

EXEC CICS SYNCPOINT ROLLBACK

END-EXEC.

- Melhores Práticas

Ao Término anormal (abend’s) de Programas que efetue atualizações em bases DB2


devemos realizar o ROLLBACK.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 70 -
DB2 – Banco de Dados

59. CURSOR WITH HOLD

- Utiliza-se para NÃO se perder a posição do cursor ao se emitir o comando COMMIT.

EXEC SQL DECLARE cursor1 CURSOR WITH HOLD FOR

SELECT cad_cod_func,
cad_nome_fuc ,
cad_sit

FROM db2prd.cad_funcionarios

WHERE cad_sit in ( 3, 5, 8 )

END-EXEC.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 71 -
DB2 – Banco de Dados

Recomendações para Programação DB2

60. EVITAR
Evitar SELECT com cláusulas:

 NOT BETWEEN
 NOT LIKE
 NOT IN
 IS NOT NULL
 LIKE

Evitar SELECT com cláusulas DISTINCT pois implica no uso do SORT.

Colocar o maior número possível de predicados na cláusula WHERE e na ordem mais


restritiva.

Procure utilizar, na cláusula WHERE, a primeira coluna do índice (caso contrário implicará
na varredura do índice).

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 72 -
DB2 – Banco de Dados

61. RECOMENDAÇÕES

Recomendações que influenciam no bom desenho do programa.

- Não usar SELECT *

- Especificar todos os nomes de colunas no INSERT

- Somente atualizar as colunas necessárias no UPDATE

- Usar o CURSOR somente quando se espera mais de uma linha no SELECT.

- Usar a opção FOR FETCH ONLY em statement SELECT quando não se pretende atualizar
o dado.

- Não confeccionar programa On-Line com statements que façam varredura em tabela.

- Minimizar o uso das cláusulas DISTINCT, ORDER BY, GROUP BY, UNION e JOIN, quando
Estes implicam no processamento de Sort por parte do DB2, principalmente quando a
quantidade de linhas recuperadas for muito grande.

- Evite o uso de JOIN

- Evite o uso de SUBQUERY

- Evite ultrapassar 15 statements DB2 em programas BATCH e 8 em programas On-Line.

- Programas com atualização DB2 deve ter Commit/Rollback.

- Programas com atualização DB2 em tabela com milhões de registros realizar tratamento
de Checkpoint.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 73 -
DB2 – Banco de Dados

62. UTILITÁRIOS

LOAD – Efetua carga em tabela DB2 com base em arquivo Seqüencial.

UNLOAD – Transporta uma tabela DB2 para um arquivo Seqüencial.

De preferência, os campos deste arquivo deverão ter o mesmo formato das coluna DB2.

A utilização de um arquivo que não siga esta orientação implica em utilizar o utilitário com
opção de conversão de campos, o que degrada a performance.

63. BIND (SQLCODE -805)


Gera o plano de acesso.

Durante o processo de BIND, o DB2 confere os statements SQL para validar as tabelas,
nomes de coluna, sobre o plano gerado no Diretório e Catálogo DB2.

64. TABLESPACE
Conjunto de datasets Vsam LDS (Linear data sets) que contem dados de uma ou mais
tabelas. Suas páginas pedem ser de 4K ou 32K.

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 74 -
DB2 – Banco de Dados

65. SQLCODE’S

+000 EXECUCAO EFETUADA COM SUCESSO


+100 COLUNA NÃO ENCONTRADA PARA FETCH, UPDATE OU DELETE, OU O RESULTADO DE UMA QUERY É
IGUAL A UMA TABELA VAZIA
+162 TABLESPACE (NOME-DA-TABELA, NOME-DO-TEBLESPACE) ESTÁ PARADO EM CHECK PENDING
+304 VALOR COM TIPO DE DADO (TIPO-DE-DADO1) NÃO PODE SER ASSOCIADO A VARIÁVEL HOST PORQUE O
VALOR NÃO ESTÁ DENTRO DO INTERVALO DA VARIAVEL HOST (NUMERO-POSICIONAL) COM TIPO DE
DADO (TIPO-DE-DADO)
+402 LOCACAO DESCONHECIDA
+403 O OBJETO LOCAL REFERENCIADO PARA UM PARAGRAFO CREATE ALIAS NÃO EXITE
+558 A OPCAO WHITH GRANT FOI IGNORADA PORQUE A CONCESSAO (GRANT) É PUBLICA
+560 A OPCAO WHITH GRANT FOI IGNORADA PARA UM UPDATE (LISTA-DE-COLUNAS)
+561 OS PRIVILEGIOS ALTER E INDEX NÃO PODEM SER CONCEDIDOS PARA ‘PUBLIC AT ALL LOCATIONS’
+625 A DEFINICAO DA TABELA (NOME-DA-TABELA) FOI MODIFICADO PARA INCOMPLETA
+802 ERRO DE EXCESSAO (TIPO-DE-EXCESSAO) OCORREU DURANTE (TIPO-DE-OPERACAO) OPERACAO EM
(TIPO-DE-DADO) DADO, POSICAO (NUMERO-POSICIONAL)
-007 PARAGRAFO CONTEM UM CARACTER ILEGAL
-010 CONSTANTE (STRING) (STRING NÃO FOI TERMINADA)
-060 TIPO DE ESPECIFICACAO INVALIDA (SPEC)
-084 PARAGRAFO SQL INACEITAVEL
-101 O PARAGRAFO É MUITO GRANDE OU MUITO COMPLEXO
-102 O TAMANHO DA CONSTANTE (STRING) É MAIOR QUE 254 CARACTERES OU 254 CARACTERES GRAFICOS
-103 A LITERAL É UMA LITERAL NUMERICA INVALIDA
-104 SIMBOLO INVALIDO <SIMBOLO>. SIMBOLOS VALIDOS SÃO <LISTA-DE-SIMBOLOS>
-105 STRING INVALIDA
-107 O NOME É MUITO GRANDE
-109 CLAUSULA NÃO PERMITIDA
-110 LITERAL <STRING> COM VALOR HEXADECIMAL INVALIDO
-111 A FUNCAO DE COLUNA NÃO INCLUI O NOME DE COLUNA
-112 O OPERANDO DE UMA FUNCAO DE COLUNA E OUTRA FUNCAO DE COLUNA OU DISTINCT SEGUIDO POR
UMA EXPRESSAO
-113 CARACTER INVALIDO ENCONTRADO NO NOME
-115 UM PREDICADO É INVALIDO PORQUE O OPERADOR DE COMPARACAO É SEGUIDO POR UMA LISTA ENTRE
PARENTESES OU POR ALGUMA OU POR TODAS SEM UMA SUBQUERY
-117 O NUMERO DE VALORES INSERIDO NÃO É O MESMO NUMERO DE COLUNAS
-118 A TABELA OU VIEW DE UM PARAGRAFO INSERT, DELETE, OU UPDATE TAMBEM É IDENTIFICADO EM UMA
CLAUSULA FROM
-119 A COLUNA IDENTIFICADA EM UMA CLAUSULA HAVING NÃO ESTÁ INCLUIDA NA CLAUSULA GROUPE BY
-120 UMA CLAUSULA WHERE OU SET INCLUI UMA FUNCAO DE COLUNA OU UMA CLAUSULA WHERE FAZ
REFERENCIA A UMA COLUNA (NOME-DA-COLUNA) QUE É DERIVADA DE UMA FUNCAO DE COLUNA OU
EXPRESSAO EM UMA DEFINICAO DE VIEW
-121 O NOME DA COLUNA É IDENTIFICADO MAIS DE UMA VEZ EM UM PARAGRAFO INSERT OU UPDATE
-122 UM PARAGRAFO SELECT SEM A CLAUSULA GROUP BY CONTEM UM NOME DE COLUNA E UMA FUNCAO
DE COLUNA EM UMA CLAUSULA SELECT OU UM NOME DE COLUNA É CONTIDO EM UMA CLAUSULA
SELECT MAS NÃO EM UMA CLAUSULA GROUP BY
-125 UM CAMPO DE UMA CLAUSULA NÃO IDENTIFICA A COLUNA DE RESULTADO
-126 O PARAGRAFO SELECT CONTEM AO MESMO TEMPO UMA CLAUSULA UPDATE E UMA CLAUSULA ORDER
BY
-127 DISTINCT ESTÁ ESPECIFICADO MAIS DE UMA VEZ EM UM SUBSELECT
-128 USO INVALIDO DE NULL EM UMA PREVISAO
-129 O PARAGRAFO CONTEM MUITOS NOMES DE TABELAS
-131 PARAGRAFO COM UM PREDICADO LIKE TEM TIPOS DE DADOS INCOMPATIVEIS
-132 UM PREDICADO LIKE É INVALIDO PORQUE O PRIMEIRO OPERANDO NÃO É UMA COLUNA OU O SEGUNDO
OPERANDO NÃO É UMA STRING
-133 NA FUNCAO DE COLUNA EM UMA SUBQUERY DE UMA CLAUSULA HAVING É INVALIDA PORQUE ESSA
INCLUI UMA EXPRESSAO QUE APLICA UM OPERADOR A UMA REFERENCIA CORRELACIONADA
-134 USO IMPROPRIO DE UMA COLUNA STRING LONGA OU UMA VARIAVEL HOST DE TAMANHO MAXIMO
MAIOR QUE 254
-136 SORT NÃO PODE SER EXECUTADO PORQUE O TAMANHO DA CHAVE DE SORT É MAIOR QUE 4000 BYTES
-138 O SEGUNDO OU O TERCEIRO ARGUMENTO DE UMA FUNCAO SUBSTRING ESTÁ FORA DO INTERVALO
(RANGE)
-150 O OBJETO DE UM PARAGRAFO INSERT, DELETE OU UPDATE É UMA VIEW A QUAL A OPERACAO
REQUERIDA NÃO É PERMITIDA
-151 UM PARAGRAFO UPDATE É INVALIDO PORQUE A COLUNA DE DESCRICAO DE CATALOGO INDICA QUE
ESTE NÃO PODE SER ALTERADO
-153 O PARAGRAFO DE CRIACAO DE VIEW NÃO INCLUI LISTA DE COLUNAS REQUERIDAS
-154 A CRIACAO DE VIEW FALHOU PORQUE A DEFINICAO DA VIEW CONTEM UNION, UM UNION ALL OU UM
OBJETO REMOTO
-156 O PARAGRAFO NÃO IDENTIFICA UMA TABELA
-157 SOMENTE UM NOME DE TABELA PODE SER ESPECIFICADO EM UMA CLAUSULA FOREIGN KEY, (NOME-DO-

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 75 -
DB2 – Banco de Dados
OBJETO) NÃO É O NOME DA TABELA
-158 O NUMERO DE COLUNAS ESPECIFICADO PARA A VIEW NÃO É O MESMO QUE O NUMERO DE COLUNAS
ESPECIFICADAS PARA A CLAUSULA SELECT
-159 PONTO OU COMENTARIO ENTRE SIMBOLOS (TOKEN) IDENTIFICAM SIMBOLO (S) (TOKEN) ANTES DE
SIMBOLO (S) (TOKEN)
-160 A OPCAO WITH CHECK NÃO PODE SER USADA PELA VIEW ESPECIFICADA
-161 O INSERT OU UPDATE NÃO É PERMITIDO PORQUE A LINHA RESULTANTE NÃO SATISFAZ A DEFINICAO DA
VIEW
-164 USUARIO NÃO TEM PRIVILEGIO PARA CRIAR UMA VIEW COM IDENTIFICACAO DE AUTORIZACAO DE
QUALIFICACAO
-170 O NUMERO DE ARGUMENTOS ESPECIFICADOS PARA UMA FUNCAO NÃO É VALIDO
-171 O TIPO DE DADOS, TAMANHO OU VALOR DO ARGUMENTO (NN) DE UMA FUNCAO INVALIDO
-180 A REPRESENTACAO STRING DE UM VALOR DE DATA (DATATIME) TEM UMA SINTAXE INVALIDA
-181 A REPRESENTACAO STRING DE UM VALOR DE DATA (DATATIME) NÃO É UM VALOR DE DATA (DATATIME)
VALIDO
-182 UMA EXPRESSAO ARITMETICA COM UM VALOR DE DATA (DATATIME) É INVALIDA
-183 UMA OPERACAO ARITMETICA EM UMA DATA OU TIMESTAMP TEM UM RESULTADO QUE NÃO ESTÁ EM UM
INTERVALO VALIDO DE DATAS
-184 UMA EXPRESSAO ARITMETICA COM UM VALOR DE DATA (DATATIME) CONTEM UM PARAMETRO MARKER
-185 A OPCAO DE FORMATO LOCAL ESTÁ SENDO USADA COM UMA DATA (DATE) OU HORA 9TIME) E NENHUMA
SAIDA LOCAL (LOCAL EXIT) FOI INSTALADA
-186 O TAMANHO DA LOCAL DATE OU DA LOCAL TIME FOI AUMENTADO E O PROGRAMA ESTÁ SENDO
EXECUTADO COM A VERSAO ANTIGA
-187 REFERENCIA A UM REGISTRADOR ESPECIAL DE CURRENT DATA/TIME É INVALIDA PORQUE O MVS TOD
CLOCK ESTÁ RUIM OU O MVS PARMTZ ESTÁ FORA DO INTERVALO
-198 O OPERANDO DE UM PARAGRAFO PREPARE OU EXECUTE IMMEDIATE ESTÁ EM BRANCO OU VAZIO
-199 USO ILEGAL DA PALVRA CHAVE (KEYWORD), SIMBOLO (TOKEN) ESPERADO
-203 REFERENCIA A COLUNA AMBIGUA
-204 NOME É UM NOME NÃO IDENTIFICADO (SIGN ON)
-205 NOME DA COLUNA (NOME-DA-COLUNA) NÃO É UMA COLUNA DA TABELA (NOME-DA-TABELA)
-206 NOME DA COLUNA (NOME-DA-COLUNA) NÃO É UMA COLUNA DE UMA TABELA QUE ESTÁ SENDO
INSERIDA, ALTERADA OU ALGUMA TABELA IDENTIFICADA NA CLAUSULA FROM
-207 A CLAUSULA ORDER BY É INVALIDA PORQUE ESTA INCLUI UM NOME DE COLUNA MAS ELA SE APLICA AO
RESULTADO DE UM UNION OU UNION ALL
-208 A CLAUSULA ORDER BY É INVALIDA PORQUE O NOME DA COLUNA NÃO FAZ PARTE DA TABELA
RESULTANTE
-219 A TABELA DE EXPLICACAO (NOME-DA-TABELA) REQUERIDA NÃO EXISTE
-220 A COLUNA (NOME-DA-COLUNA) NA TABELA DE EXPLICACAO (NOME-DA-TABELA) NÃO ESTÁ
PROPRIAMENTE DEFINIDA
-221 ‘SET DE UMA COLUNA OPCIONAL’ EM UMA TABELA DE EXPLICACAO (NOME-DA-TABELA) ESTÁ
INCOMPLETO, COLUNA DE OPCAO (NOME-DA-COLUNA) ESTÁ FALTANDO)
-250 O NOME DE LOCACAO LOCAL NÃO ESTÁ DEFINIDO QUANDO PROCESSANDO UM NOME DE OBJETO DE
TRES PARTES (THREE-PART OBJECT NAME)
-251 NOME SIMBÓLICO NÃO É VALIDO
-301 A VARIAVEL HOST DE INPUT (NUMERO-POSICIONAL) NÃO PODE SER USADO COMO ESPECIFICADO POR
CAUSA DE SEU TIPO DE DADO (TIPO-DE-DADO)
-302 A VARIAVEL HOST DE INPUT (NUMERO-POSICIONAL) É INVALIDO OU MUITO GRANDE PARA A COLUNA
ESPECIFICADA
-303 O VALOR NÃO PODE SER ASSOCIADO À VARIAVEL HOST DE OUTPUT (NUMERO-POSICIONAL) PORQUE O
TIPO DE DADO NÃO É COMPARAVEL
-305 O VALOR NULO (NULL) NÃO PODE SER ASSOCIADO À VARIAVEL HOST DE OUTPUT (NUMERO-
POSICIONAL) PORQUE NENHUMA VARIAVEL INDICADORA ESTÁ ESPECIFICADA
-309 UM PREDICADO É INVALIDO PORQUE A VARIAVEL HOST REFERENCIADA TEM UM VALOR NULO
-310 UM PARAMETRO DE VARIAVEL HOST DECIMAL (NOME-DA-VARIAVEL) NÃO CONTEM DADOS DECIMAIS
-312 VARIAVEL HOST (NOME-DA-VARIAVEL) NÃO DEFINIDO OU NÃO USAVEL
-313 O NUMERO DA VARIAVEL HOST ESPECIFICADA NÃO É IGUAL AO NUMERO DE PARAMETROS MARKERS
-314 O PARAGRAFO CONTEM REFERENCIA AMBIGUA DE UMA VARIAVEL HOST
-401 OS OPERANDOS DE UMA COMPARACAO ARITMETICA NÃO SÃO COMPARAVEIS
-402 UMA FUNCAO ARITMETICA OU OPERADOR ESTÁ APLICADO A CARACTER OU DATATIME
-404 O PARAGRAFO UPDATE OU INSERT ESPECIFICA UMA CONSTANTE (STRING) É MUITO GRANDE (NOME-DA-
COLUNA)
-405 A LITERAL NUMERICA NÃO PODE SER USADA COMO ESPECIFICADA PORQUE ESTÁ FORA DO INTERVALO
-406 O VALOR CALCULADO OU DERIVADO NÃO ESTÁ DENTRO DO INTERVALO DA COLUNA OBJETO
-407 UM VALOR DE UPDATE OU INSERT ESTÁ NULO, MAS A COLUNA (NOME-DA-COLUNA) NÃO PODE CONTER
VALORES NULOS
-408 UM VALOR DE UPDATE OU INSERT NÃO É COMPARAVEL COM O TIPO DE DADO DA COLUNA OBJETO
(NOME-DA-COLUNA)
-409 OPERANDO INVALIDO PARA A FUNCAO COUNT
-410 A LITERAL DE PONTO LUTUANTE CONTEM MAIS DE 30 CARACTERES
-411 CURRENT DATATIME, CURRENT SQLID OU USER KEYWORD NÃO PODE SER USADO COMO ESPECIFICADO
-412 A CLAUSULA SELECT DE UMA SUBQUERY ESPECIFICA COLUNAS MULTIPLAS
-414 O NUMERIC OU COLUNA DATETIME ESTÁ ESPECIFICADO EM UM PREDICADO LIKE
-415 AS COLUNAS CORRESPONDENTES DOS OPERANDOS DE UM UNION OU UNION ALL NÃO TEM DESCRICOES
DE COLUNAS COMPARAVEIS
-416 UM OPERANDO DE UM UNION CONTEM UMA COLUNA STRING MUITO GRANDE

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 76 -
DB2 – Banco de Dados
-417 O PARAGRAFO STRING A SER PREPARADO INCLUI PARAMETROS MARKERS COMO OPERANDOS DE UM
MESMO OPERADOR
-418 O PARAGRAFO STRING A SER PREPARADO CONTEM UM USO INVALIDO DE PARAMETROS MARKERS
-419 A OPERACAO DE DIVISAO DECIMAL É INVALIDA PORQUE O RESULTADO DEVERIA TER UMA ESCALA
NEGATIVA
-421 OS OPERANDOS DE UM UNION OU UNION ALL NÃO TEM O MESMO NUMERO DE COLUNAS
-501 CURSOR IDENTIFICADO EM UM PARAGRAFO FETCH OU CLOSE NÃO ESTÁ ABERTO
-502 O CURSOR IDENTIFICADO EM UM PARAGRAFO OPEN JÁ ESTÁ ABERTO
-503 UMA COLUNA NÃO PODE SER ALTERADO PORQUE ISSO NÃO ESTÁ IDENTIFICADO NA CLAUSULA UPDATE
DE UM PARAGRAFO SELECT DE UM CURSOR
-504 O NOME DO CURSOR (NOME-DO-CURSOR) NÃO ESTÁ DEFINIDO
-507 O CURSOR IDENTIFICADO EM UM PARAGRAFO UPDATE OU DELETE NÃO ESTÁ ABERTO
-508 O CURSOR IDENTIFICADO EM UM PARAGRAFO UPDATE OU DELETE NÃO ESTÁ POSICIONADO EM UMA
LINHA
-509 A TABELA IDENTIFICADA EM UM PARAGRAFO UPDATE OU DELETE NÃO É A MESMA TABELA DESIGNADA
PELO CURSOR
-510 A TABELA DESIGNADA PELO CURSORDE UM PARAGRAFO UPDATE OU DELETENAO PODE SER
MODIFICADA
-511 A CLAUSULA FOR UPDATE NÃO PODE SER ESPECIFICADA PORQUE A TABELA DESIGNADA PELO CURSOR
NÃO PODE SER MODIFICADA
-512 PARAGRAFO FAZ REFERENCIA A UM OBJETO REMOTO INVALIDO
-513 O ALIAS NÃO DEVE SER DEFINIDO EM OUTRO LOCAL OU ALIAS REMOTO
-514 O CURSOR NÃO ESTÁ EM ESTADO PREPARADO
-516 O PARAGRAFO DESCRITO NÃO IDENTIFICA UM PARAGRAFO PREPARADO
-517 CURSOR NÃO PODE SER USADO PORQUE O NOME DO PARAGRAFO NÃO IDENTIFICA UM PARAGRAFO
SELECT PREPARADO
-518 O PARAGRAFO EXECUTE NÃO IDENTIFICA UM PARAGRAFO PREPARADO VALIDO
-519 O PARAGRAFO PREPARE IDENTIFICA O PARAGRAFO SELECT DE UM CURSOR ABERTO
-530 O VALOR DA CHAVE ESTRANGEIRA (FOREIGN-KEY) DE UM INSERT OU UPDATE É INVALIDO
-531 A CHVE PRIMARIA (PRIMARY-KEY) EM UMA LINHA DE PARENTE NÃO PODE SER ALTERADA PORQUE TEM
UMA OU MAIS LINHAS DEPENDENTES EM UM RELACIONAMENTO
-532 O RELACIONAMENTO RESTRINGE A DELECAO DE UMA LINHA COM RID X
-533 INSERCAO DE MULTIPLAS LINHAS INVALIDAS
-534 A CHAVE PRIMARIA (PRIMARY-KEY) NÃO PODE SER ALTERADA POR CAUSA DO UPDATE DE MULTIPLAS
LINHAS
-535 UPDATE OU DELETE INVALIDO COM WHERE CURRENT OF
-536 O PARAGRAFO DELETE É INVALIDO PORQUE A TABELA PODE SER AFETADA PELA OPERACAO
-537 A CLAUSULA DE CHAVE PRIMARIA (PRIMARY-KEY) OU CHAVE ESTRANGEIRA (FOREIGN-KEY) IDENTIFICA
COLUNA MAIS DE UMA VEZ
-538 CHAVE ESTRANGEIRA (FOREIGN-KEY) NÃO ESTÁ CONFORME A DESCRICAO DE CHAVE PRIMARIA
(PRIMARY-KEY) DA TABELA
-539 TABELA NÃO TEM CHAVE PRIMARIA (PRIMARY-KEY)
-540 A DEFINICAO DA TABELA ESTÁ INCOMPLETA PORQUE NÃO TEM INDICE PRIMARIO
-541 CHAVE ESTRANGEIRA (FOREIGN-KEY) ESTÁ INVALIDA PORQUE É UM CONTRAGENTE REFERENCIAL
DUPLICADO
-542 (NOME-DA-COLUNA) NÃO PODE SER UMA COLUNA DE CHAVE PRIMARIA (PRIMARY-KEY) PORQUE PODE
CONTER VALORES NULOS
-551 USUARIO NÃO TEM PRIVILEGIO PARA EXECUTAR A OPERACAO OBJETIVADA
-552 USUARIO NÃO TEM PRIVILEGIO PARA EXECUTAR A OPERACAO
-553 USUARIO ESPECIFICADO NÃO É UM DOS USUARIO AUTORIZADOS
-554 UMA IDENTIFICACAO DE AUTORIZACAO NÃO PODE CONCEDER PRIVILEGIO PARA ELE MESMO
-555 UMA IDENTIFICACAO DE AUTORIZACAO NÃO PODE REVOGAR UM PRIVILEGIO PARA ELE MESMO
-556 UM PRIVILEGIO NÃO PODE SER REVOGADO PORQUE ESSE NÃO ESTA POSSUIDO POR UMA
IDENTIFICACAO DE AUTORIZACAO
-557 PALAVRA CHAVE (KEYWORD) DE CONCESSAO (GRANT) / REVOGACAO (REVOKE) INCONSISTENTE,
PALAVRAS CHAVE (KEYWORD) PERMITIDAS SÃO <LISTA-DE-PALAVRAS-CHAVE>
-558 CLAUSULA INVALIDA OU COMBINACAO DE CLAUSULAS EM UMA CONCESSAO (GRANT) OU REVOGACAO
(REVOKE)
-559 TODAS AS FUNCOES DE AUTORIZACAO ESTAO DESABILITADAS
-571 O PARAGRAFO DEVERIA RESULTAR EM UMA ALTERACAO DE LOCAL MULTIPLA
-601 O NOME DO OBJETO A SER CRIADO É IDENTICO AO NOME DO TIPO DE OBJETO EXISTENTE
-602 MUITAS COLUNAS ESPECIFICADAS EM UM CREATE INDEX
-603 UM INDICE ÚNICO Não PODE SER CRIADO PORQUE A TABELA CONTEM COLUNAS QUE ESTÃO
DUPLICADAS EM RELACAO AOS VALORES DAS COLUNAS IDENTIFICADAS
-604 UMA DEFINICAO DE COLUNA ESPECIFICA UM TAMANHO, PRECISAO OU ATRIBUTO DE ESCALA INVALIDO
-607 OPERACAO NÃO É DEFINIDA PARA TABELAS DE SISTEMA
-612 NOME DE COLUNA DUPLICADA
-613 A CHAVE PRIMARIA (PRIMARY-KEY) É MUITO GRANDE OU TEM MUITAS COLUNAS
-614 O INDICE NÃO PODE SER CRIADO PORQUE O SUM DE TAMANHOS INTERNOS DE COLUNAS
IDENTIFICADAS É MAIOR QUE O MAXIMO PERMITIDO
-616 TIPO DE OBJETO1 (OBJ-TYPE1) NOME DE OBJETO (OBJ-NAME) NÃO PODE SER SOBREPOSTO PORQUE ESSE
É REFERENCIADO POR TIPO DE OBJETO2 (OBJ-TYPE2) NOME DE OBJETO2 (OBJ-NAME2)
-618 OPERACAO NÃO É PERMITIDA EM TABELAS DE SISTEMA
-619 OPERACAO PERDEU PERMICAO PORQUE A TABELA DE TRABALHO (WORKFILE DATA BASE) NÃO ESTÁ
“STOPADA”

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 77 -
DB2 – Banco de Dados
-620 PALAVRA CHAVE (KEYWORKD) NO PARAGRAFO NÃO PERMITIDA PARA UMA TABLESPACE EM UMA
TABELA DE TRABALHO (WORFILE DATA BASE)
-621 (DBID) DUPLICADO DETECTADO E PREVIAMENTE ASSOCIADO À TABELA
-623 O (CLUSTERING INDEX) JÁ EXISTE NA TABELA
-624 TABELA JÁ TEM CHAVE PRIMARIA (PRIMARY-KEY)
-625 TABELA NÃO TEM UM INDICE PARA REFORCAR A UNICIDADE DA CHAVE PRIMARIA (PRIMARY-KEY)
-626 O PARAGRAFO ALTER NÃO É EXECUTAVEL PORQUE O PAGESET NÃO ESTÁ “STOPADO”
-627 O PARAGRAFO ALTER É INVALIDO PORQUE O PAGESET TEM ARQUIVOS GERENCIADOS PELO USUARIO
(USER-MANAGED DATA SETS)
-628 UM TABLESPACE SEGMENTADO NÃO PODE SER PARTICIONADO
-629 SET NULL NÃO PODE SER ESPECIFICADO PORQUE A CHAVE ESTRANGEIRA (FOREIGN KEY) NÃO PODE
CONTER VALORES NULOS
-631 CHAVE ESTRANGEIRA (FOREIGN KEY) É MUITO GRANDE OU TEM MUITAS COLUNAS
-632 A TABELA NÃO PODE SER DEFINIDA COMO UMA DEPENDENTE DE (NOME-DA-TABELA) POR CAUSA DE
REGRAS DE RESTRICOES DE DELECAO
-633 AS REGRAS DE DELECAO DEVEM SER (REGRA-DE-DELETE)
-634 AS REGRAS DE DELECAO NÃO PODEM SER CASCATA (CASCADE)
-635 AS REGRAS DE DELECAO NÃO PODEM SER DIFERENTES OU NÃO PODEM SER SET NULL
-636 AS CHAVES PARTICIONADAS NÃO ESTAO ESPECIFICADAS EM ORDEM ASCENDENTE OU DESCENDENTES
-637 PALAVRA CHAVE (KEYWORD) DUPLICADA
-638 TABELA NÃO PODE SER CRIADA PORQUE ESTÁ FLATANDO DEFINICAO DE COLUNA
-639 UMA COLUNA NULA DE UMA CHAVE ESTRANGEIRA (FOREIGN KEY) COM UMA REGRA DE DELECAO DE
SET NULL NÃO PODE SER UMA COLUNA DE CHAVE DE UM INDICE
-644 VALOR INVALIDO ESPECIFICADO PARA PARAGRAFO DE PALAVRA CHAVE (KEYWORD) – (PALAVRA CHAVE
EM STMT-TYPE)
-646 TABELA NÃO PODE SER CRIADA EM UMA TABLESPACE PARTICONADA/ DEFAULT (NOME-DA-
TABLESPAACE) PORQUE A MESMA JÁ CONTEM UMA TABELA
-647 BUFFERPOLL NÃO PODE SER ESPECIFICADO PORQUE O MESMO NÃO ESTÁ ATIVADO
-652 VIOLACAO DE EDICAO DE DEFINICAO DE INSTALACAO OU PROCEDURE DE VALIDACAO
-653 TABELA EM TABLESPACE PARTICIONADA NÃO ESTÁ DISPONIVEL PORQUE SEU INDICE PARTICIONADO
NÃO FOI CRIADO
-660 INDICE NÃO PODE SER CRIADO EM UMA TABLESPACE PARTICIONADA PORQUE O NUMERO DE
ESPECIFICAOES DE PARTES
-661 INDICE NÃO PODE SER CRIADO EM UMA TABLESPACE PARTICIONADA PORQUE O NUMERO DE
ESPECIFICACOES DE PARTES NÃO É IGUAL AO NUMERO DE PARTICOES DA TABLESPACE
-662 UM INDICE PARTICIONADO NÃO PODE SER CRIADO EM UMA TABLESPACE NÃO PARTICIONADA
-663 O NUMERO DE VALORES DE LIMITE DE CHAVE É ZERO OU MAIOR QUE O NUMERO DE COLUNAS NO
INDICE DE CHAVE
-664 O TAMANHO INTERNO DOS CAMPOS DE LIMITE DE CHAVE PARA UM INDICE PARTICIONADO EXCEDE O
TAMANHO IMPOSTO PELO GERENCIADOR DE INDICE
-665 A CLAUSULA PART DE UM PARAGRAFO ALTER FOI OMITIDO OU É INVALIDO
-666 OBJETO (STMT-VERB) NÃO PODE SER EXECUTADO PORQUE UMA FUNCAO ESTÁ EM PROGRESSO
-667 O (CLUSTERING INDEX) DE UMA TABLESPACE PARTICIONADA NÃO PODE SER EXPLICITAMENTE
SOBREPOSTA
-668 A COLUNA NÃO PODE SER ADICIONADA A TABELA PORQUE A TABELA TEM UMA PROCEDURE DE EDICAO
-669 TABELA EM UMA TABLESPACE PARTICIONADA NÃO PODE SER EXPLICITAMENTE SOBREPOSTA
-670 O TAMANHO DO REGISTRO DA TABELA EXCEDE O LIMITE DO TAMANHO DA PAGINA
-671 O ATRIBUTO BUFFERPOOL DE UMA TABLESPACE NÃO PODE SER ALTERADO COMO ESPECIFICADO
PORQUE ISSO NÃO PODERIA MUDAR O TAMANHO DA PAGINA DA TABLESPACE
-676 UM BUFFERPOOL DE PAGINA 32K NÃO PODE SER USADO POR UM INDICE
-677 ARMAZENAMENTO VIRTUAL INSUFICIENTE PARA EXPANSAO DE BUFFERPOOL
-678 A LITERAL ESPECIFICADA PARA A CHAVE DE LIMITE DE INDICE DEVERIA TER CONFORMIDADE COM O
TIPO DE DATA DE UMA COLUNA CORRESPONDENTE
-679 O OBJETO NÃO PODE SER CRIADO PORQUE UMA SOBREPOSICAO ESTÁ PENDENTE EM UM OBJETO
-680 MUITAS COLUNAS ESPECIFICADAS PARA A TABELA
-681 COLUNA EM VIOLACAO DE PROCEDURE DE CAMPO DE DEFINICAO DE INSTALACAO
RT:RETURN-CODE, RS:REASONCODE, MSG:MESSAGE-TOKEN
-682 PROCEDURE DE CAMPO NÃO DEVERIA ESTAR CARREGADA
-683 TIPO DE COLUNA PARA PROCEDURE DE CAMPO OU OPCAO DE DADOS BID INVALIDO
-684 O TAMANHO DA LITERAL LIST BEGINNING É MUITO GRANDE
-685 TIPO DE CAMPO INVALIDO
-686 COLUNA DEFINIDA COM UMA PROCEDURE DE CAMPO NÃO PODE SER COMPARADA COM OUTRA COLUNA
COM PROCEDURE DE CAMPO DIFERENTE
-687 TIPO DE CAMPO NÃO PODE SER COMPARADO
-688 DADOS RETORNADOS INCORRETOS PARA PROCEDURE DE CAMPO
-802 ERRO DE OPERACAO ARITMETICA
-803 VALOR DE UM INSERT OU UPDATE É INVALIDO PORQUE O INDICE CONSTRANGE COLUNAS DE UMA
TABELA ONDE DUAS LINHAS NÃO PODEM CONTER VALORES DUPLICADOS NESSAS COLUNAS RID.
LINHA EXISTENTE É X “RID”
-804 UM ERRO FOI ENCONTRADO NOS PARAMETROS DE INPUT DO PROGRAMA DE APLICACAO PARA UM
PARAGRAFO SQL
-805 NOME DO PROGRAMA NÃO ENCONTRADO NO PLANO
-811 O RESULTADO DE UM PARAGRAFO SELECT É UMA TABELA COM MAIS DE UMA LINHA, OU O RESULTADO
DE UMA SUBQUERY DE PREDICADO BASICO É MAIOR QUE UM VALOR
-815 UMA CLAUSULA GROUP BY OU HAVING ESTÁ IMPLICITAMENTE ESPECIFICADA EM UM PARAGRAFO

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 78 -
DB2 – Banco de Dados
SELECT OU UMA SUBQUERY DE PREDICADO BASICO
817 O INSERT, UPDATE, DELETE, DDL OU PARAGRAFO DE AUTORIZACAO NÃO PODE SER EXECUTADO
PORQUE A TRANSACAO IMS/VS ESTÁ COM INQUIRICAO ÚNICA
-818 O TIMESTAMP GERADO NA PRECOMPILACAO (X) NO MODULO CARREGADO ESTÁ DIFERENTE DO
TIMESTAMP (Y) CONSTRUIDO PARA O DBRM
-819 A VIEW NÃO PODE SER PROCESSADA PORQUE O TAMANHO ( ) NO CATALOGO É ZERO
-820 O PARAGRAFO SQL NÃO PODE SER PROCESSADO PORQUE A TABELA CATALOGO CONTEM UM VALOR QUE
NÃO É VALIDO
-822 O SQLDA CONTEM UM ENDERECO DE DADOS OU ENDERECO DE VARIAVEL INDICADORA INVALIDO
-840 MUITOS ITENS RETORNADOS EM UMA LISTA SELECT OU INSERT
-901 EXECUCAO SEM SUCESSO CAUSADA POR UM ERRO NO SISTEMA QUE NÃO INTERFERE NO SUCESSO DA
EXECUCAO DE PARAGRAFOS SQL SUBSEQUENTES
-904 EXECUCAO SEM SUCESSO CAUSADA POR UM RECURSO NÃO DISPONIVEL, TIPO DE RAZAO DO RECURSO
É NOME DO RECURSO
-905 EXECUCAO SEM SUCESSO DEVIDO AO LIMITE DE RECURSO TER SIDO EXCEDIDO, NOME DO RECURSO
-906 O PARAGRAFO SQL NÃO PODE SER EXECUTADO PORQUE ESSA FUNCAO ESTÁ DASEBILITADA DEVIDO A
UM ERRO ANTERIOR
-907 NÃO PODE DETERMINAR SE A TENTATIVA DE COMMIT UPDATES CRIOU UM ENDERECO REMOTO COMO
‘COM SUCESSO’ OU ‘SEM SUCESSO’
-909 O OBJETO FOI DELETADO
-910 O PARAGRAFO SQL NÃO PODE ACESSAR UM OBJETO AO QUAL UMA SOBREPOSICAO OU ALTERACAO
ESTÁ PENDENTE
-911 ROOLBACK EXECUTADO NA UNIDADE DE TRABALHO CORRENTE DEVIDO A DEADLOCK OU TIMEOUT,
TIPO DE RAZAO DE RECURSO E NOME DO RECURSO
-913 EXECUCAO SEM SUCESSO CAUSADA POR DEADLOCK OU TIMEOUT, TIPO DE CODIGO DE RAZAO DO
RECURSO E NOME DO RECURSO
-922 AUTORIZACAO DE CONEXAO FALHA: (TIPO-DE-ERRO) ERRO
-923 CONEXAO DB2 NÃO ESTABELECIDA: DB2(CONDICAO) RAZAO(CODIGO-DE-RAZAO) TIPO(TIPO-DE-
RECURSO) NOME(NOME-DO-RECURSO)
-924 ERRO DE CONEXAO INTERNA DO DB2, (CODIGO-DE-FUNCAO, CODIGO-DE-RETORNO, CODIGO-DE-RAZAO)
REASON-CODE
-925 COMMIT NÃO VALIDO NI IMS/VS OU AMBIENTE CICS
-926 ROLLBACK NÃO VALIDO NO IMS/VS OU AMBIENTE CICS
-927 A LINGUAGEM DE INTERFACE (LI) FOI CHAMADA QUANDO O AMBIENTE CONECTADO NÃO FOI
ESTABELECIDO, O PROGRAMA DEVERIA SER INVOCADO SOB O COMANDO DSN

ELABORADO POR : ULISSES & MORAES INFORMÁTICA - TI


- 79 -

Potrebbero piacerti anche