You are on page 1of 61

DB2

DB2/COBOL

I N D I C E
-----------

1
1a
1b
1c
1d
1e
1f
1g
1h

Conceitos Bsicos ..................................


SQL ................................................
QUERIES ............................................
Tabelas ............................................
VIEW ...............................................
ndice .............................................
KEYS ...............................................
Constraints ........................................
Data types .........................................

2
2a
2b
2c

IKJEFT01 ...........................................
Execuo de comandos DB2 via batch .................
Execuo de comandos DB2 via aplicativo Cobol ......
Informaes usadas pelo DB2 ........................

3
3a
3b
3c
3d

Principais comandos SQL


Comando SELECT .....................................
Comando UPDATE .....................................
Comando INSERT .....................................
Comando DELETE .....................................

4 DB2 em programa COBOL ..............................


5 SQLCODES ...........................................

1 CONCEITOS BSICOS

SUB-SISTEMA
DATABASE
TABLESPACE
TABLE
DADOS

STORAGE GROUP

INDEX

VIEW

RELATIONAL DATABASE
Um relational database (RDB) um database composto de um conjunto de tabelas, manipuladas de
acordo com o modelo de dados relacional.
Ele contm um conjunto de objetos usados para armazenar, manipular e acessar dados.
Exemplos desses objetos so : tabelas, views, indices, funes, etc...

SQL - STRUCTURED QUERY LANGUAGE


SQL uma linguagem padro para definir e manipular dados em um RDB. De acordo com o modelo de
dados relacional.
Os SQL statements so executados por um gerenciador de banco de dados.
Embedded SQL statements so SQL statements escritos dentro de um programa numa linguagem
hospedeira qualquer (Cobol, C, etc), e pr-processadas pelo pr-processador do SQL antes da
compilao do programa.
Existem 2 tipos de embedded SQL statements : estticos e dinmicos.
SQL esttico : neste caso, a construo (preparo) do(s) commando(s) SQL feita pelo pr-compilador.
SQL dinmico : neste caso, a construo (preparo) do(s) comando(s) feita em tempo de execuo, o
pr-compilador servindo apenas para transformar o cdigo entendido pelo pr compilador SQL (e no
pelo compilador da linguagem) em cdigo de chamada a uma funo SQL que ser invocada em tempo
de execuo do programa aplicativo, e que se encarregar de preparar o comando SQL efetivo.
Outra forma de executar comandos SQL a INTERATIVA, onde os comandos so entrados atravs de
linhas de comando, analisadas por um interpretador de comandos (geralmente invocado atravs de um
command center).

QUERIES
Uma query um componente de certos SQL statements que especifica uma result table temporria.

TABELAS
So estruturas mantidas pelo gerenciador de banco de dados.
So compostas de colunas (COLUMNS) e linhas (ROWS).
Denomina-se RESULT TABLE tabela gerada como resultado de uma QUERY.

VIEW
uma forma alternativa de visualizar dados em uma ou mais tabelas.
, na verdade, uma result table.
Especifica-se sua estrutura num SELECT, indicando a origem dos dados que iro compo-la.

NDICE
um conjunto ordenado de pointers para linhas de uma tabela. baseado nos valores que as colunas
chave contm.
Os ndices so utilizados para :
Possibilitar acesso atravs de chaves distintas
Melhorar a performance
Assegurar a unicidade de chaves.

KEYS
um conjunto ordenado de colunas usado para identificar e acessar determinada(s) linha(s). Uma
determinada coluna pode fazer parte de uma ou mais chaves.
Uma composite key (chave composta) aquela composta de mais de uma coluna.
Uma unique key (chave nica) aquela que no permite mais de uma linha com valores iguais.
Uma primary key (chave primria) um caso especial de unique key, e a que permite o
armazenamento e acesso bsico a uma tabela.
Uma foreign key (chave estrangeira) aquela definida atravs de um referential constraint (regras de
construo).

CONSTAINTS
Um constraint uma regra que o gerenciador de base de dados permite.
Um unique constraint uma regra que probe a duplicidade de valores em uma ou mais colunas
de uma tabela. Unique e primary keys so exemplos de unique constraints. Por exemplo, um
unique constraint pode ser definido no cdigo de fornecedor de uma tabela de fornecedores, para
assegurar que o mesmo cdigo de fornecedor no seja dado a dois (ou mais) fornecedores.
Um referential constraint uma regra lgica a respeito de valores em uma ou mais colunas em
uma ou mais tabelas. Por exemplo, um conjunto de tabelas que compartilhem informaes a
respeito de fornecedores de uma corporao. Um referential constraint pode ser definido, por
exemplo, para indicar que toda vez que for solicitada uma excluso (delete) de fornecedor, seja
verificado se no existem outras tabelas relacionadas que fazem meno ao cdigo do
fornecedor.
Um table check constraint estabelece restries para quando alguma informao for inserida
(insert) numa tabela. Por exemplo, pode-se definir um table check constraint que impea que
seja gravado (por incluso ou atualizao) um salrio de funcionrio < 180,00.
BUILT-IN DATA TYPES
External data = DATALINK
Datetime
TIME
TIMESTAMP
DATE
String
Character
CHAR (tamanho fixo)
VARCHAR (tamanho varivel)
CLOB (tamanho varivel)
Graphic
GRAPHIC (tamanho fixo)
VARGRAPHIC (tamanho varivel)
DBCLOB (tamanho varivel)
BLOB (binrio tamnaho varivel)
Numrico com sinal
exato
binrio inteiro
SMALLINT
INTEGER
BIGINT
DECIMAL (decimal compactado)
aproximado
REAL (ponto flutuante preciso simples)
DOUBLE (ponto flutuante preciso dupla)
Obs.: Nulls : Todos os data types permitem, opcionalmente, um valor null, o qual indica a ausncia de
informao. Colunas definidas como NOT NULL no poderam conter valor null.

2 IKJEFT01
2a. Execuo de comandos DB2 via batch

Memria

Sistema
Operacional Gerenciador

(programa IKJEFT01)

DB2

Servios
Resultado

Exemplo :

SYSIN
(SELECT * FROM
TABELA_CLIENTES)

Sistema
Operacional Gerenciador

(programa IKJEFT01)

DB2

SELECT * FROM
TABELA_CLIENTES

(RESULTADO)

BASE DE DADOS

SYSPRINT
(RESULTADO)

//PEF#SELE JOB (B281,DB2),A005864,MSGCLASS=X,CLASS=R,


// NOTIFY=TORI004,GROUP=DB2DPEF
//*PASSWORD=MAR03X
//STEP001 EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=6M
//STEPLIB DD DSN=SYS1.DSNDB1D.SDSNLOAD,DISP=SHR
//
DD DSN=SYS1.DSNDB1D.RUNLIB.LOAD,DISP=SHR
//DBRMLIB DD DSN=SYS1.DSNDB1D.DBRMLIB.DATA,
//
DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(DB1D)
RUN PROGRAM(DSNTEP2) PLAN(DSNTEP2) LIB('SYS1.DSNDB1D.RUNLIB.LOAD') PARMS('/ALIGN(MID)')
END
//SYSIN
DD *
SELECT *
FROM DB2T.ZZZ_AGECLI
//
READY
DSN SYSTEM(DB1D)
DSN
RUN PROGRAM(DSNTEP2) PLAN(DSNTEP2)
DSN
END
READY
END

LIB('SYS1.DSNDB1D.RUNLIB.LOAD'

PAGE
1
***INPUT STATEMENT:
SELECT *
FROM DB2T.ZZZ_AGECLI
SQLERROR ON
SELECT
COMMAND, PREPARE FUNCTION
RESULT OF SQL STATEMENT:
DSNT408I SQLCODE = -204, ERROR: DB2T.ZZZ_AGECLI IS AN UNDEFINED NAME
DSNT418I SQLSTATE
= 42704 SQLSTATE RETURN CODE
DSNT415I SQLERRP
= DSNXOTL SQL PROCEDURE DETECTING ERROR
DSNT416I SQLERRD
= -500 0 0 -1 0 0 SQL DIAGNOSTIC INFORMATION
DSNT416I SQLERRD
= X'FFFFFE0C' X'00000000' X'00000000' X'FFFFFFFF'
INFORMATION

2b. Execuo de comandos DB2 via


aplicativo Cobol

Memria

Aplicativo (programa xxxxxxxx chamado pelo IKJEFT01)

Sistema
Operacional Gerenciador
DB2

SELECT * FROM
TABELA_CLIENTES

SELECT * FROM
TABELA_CLIENTES

(RESULTADO)

Exemplo :
ARQUIVOS DO PROGRAMA

Aplicativo (programa xxxxxxxx chamado pelo IKJEFT01)

Sistema
Operacional Gerenciador
DB2

SELECT * FROM
TABELA_CLIENTES

SELECT * FROM
TABELA_CLIENTES

(RESULTADO)

BASE DE DADOS

SELECT * FROM TABELA_CLIENTES


(RESULTADO)

2c. Informaes usadas pelo DB2

SYSIBM.SYSTABLES

SYSIBM.SYSCOLUMNS

SYSIBM.SYSDBAUTH

SYSIBM.SYSTABAUTH

SYSIBM.SYSINDEXES

SYSIBM.SYSRELS

SYSIBM.SYSTABCONST

DB2

IKJEFT01

Base de Dados
SYSIBM.SYSDBAUTH

SYSIBM.SYSTABS

Tem a relao de todas as tabelas,


respectivas colunas, chaves,
relacionamentos, etc...

TABELA

ACT0001
COLUNA
--NRFILIAL
CDCIDADE
CDNOMEFA
TPFRANQU
CDOFERTA
INGRHEAD

DESCRICAO
---NUMERO FILIAL
CODIGO CIDADE
CODIGO NOME FANTASIA
TIPO FRANQUIA
CODIGO OFERTA
INDICADOR GROUP HEAD

SEQ
--1
2
3
4
5
6

TIPO
---DECIMAL
SMALLINT
SMALLINT
SMALLINT
SMALLINT
CHAR

TAM
--3
2
2
2
2
1

NUL
--N
N
N
N
N
N

3 Principais comandos SQL


3a - COMANDO SELECT
SELECT coluna1 [, coluna2..... , colunan ]
FROM nometabela
INTO :campo1 [ ... , campon]

+
+

SELECT

TBNAME
FROM SYSIBM.SYSCOLUMNS
INTO :TBNAME-X

+
+

TBNAME, NAME, COLNO


FROM SYSIBM.SYSCOLUMNS
INTO :TBNAME-X, :COLNAME-X

+
+

SELECT

SELECT coluna1 [, coluna2..... , colunan ]


FROM nometabela
WHERE condio
INTO :campo1 [ ... , campon]

+
+
+

SELECT

+
+
+

TBNAME, NAME, COLNO


FROM SYSIBM.SYSCOLUMNS
WHERE COLNO = 1
INTO :TBNAME-X, :COLNAME-X

SELECT coluna1 [, coluna2..... , colunan ]


FROM nometabela
WHERE condio
ORDER coluna1 [... , colunan] ]
INTO :campo1 [ ... , campon]

+
+
+
+

SELECT

+
+
+
+

TBNAME, NAME
FROM SYSIBM.SYSCOLUMNS
WHERE COLNO = 1
ORDER BY NAME
INTO :TBNAME-X, :NAME-X

SELECT culuna(s)
FROM tabela
GROUP BY coluna

FROM =
Nome da tabela

INTO =
Nomes das variveis
onde
sero
colocados
os

WHERE =
Filtro das linhas
desejadas

ORDER =
Classificao
desejada

GROUP BY =
Para tratar grupos de
linhas

SELECT JOB, MIN(SALARY),


FROM EMPLOYEE
GROUP BY JOB

MAX(SALARY)

COLUNAS
Especificar
ou
ou
ou

o(s) nome(s) da(s) coluna(s) que se deseja selecionar


* para todas as colunas
uma expresso
uma funo

A palavra-chave DISTINCT elimina duplicidade de linhas do resultado.


FROM
Nome da tabela de origem dos dados.
INTO
Nomes das variveis onde sero colocados os valores obtidos da tabela.
Especificar na execuo do DB2 chamado por programa em linguagem Cobol,
por exemplo.
No especificar na execuo do DB2

sozinho.

WHERE
Especificar o(s) filtro(s) de seleo para o contedo da(s) coluna(s).
ORDER
Especificar a ordem de classificao.
Pode ser feita atravs do nome da coluna, ou de um inteiro que indique seu
nmero, ou uma expresso.
O DB2 ordena primeiro pela primeira chave (coluna) especificada, depois
pela segunda, e assim por diante.
Pode-se especificar ordem ascendente ou descendente. Dados nulos aparecem
por ultimo (na ordem ascendente) ou no incio (se a ordem solicitada for
descendente).
GROUP BY
Especificar a coluna para tratar por grupo de linhas.
Se usada, a clusula GROUP BY deve seguir a clusula FROM (e a WHERE, se
houver), e deve preceder a clusula ORDER BY.
Pode-se, tambm, totalizar mais de um grupo de colunas.

WHERE
Operadores :
Tipo de comparao
Equal to null
Equal to
Not equal to
Less than
Less than or equal to
Not less than
Greater than
Greater than or equal to
Not greater than
Similar to another value
At least one of two
conditions
Both of two conditions
Between two values
Equals a value in a set

Especificar
IS NULL
=
<>
<
<=
>=
>
>=
<=
LIKE

Exemplo
PHONENO IS NULL
DEPTNO = 'X01'
DEPTNO <> 'X01'
AVG(SALARY) < 30000
AGE <= 25
AGE >= 21
SALARY > 2000
SALARY >= 5000
SALARY <= 5000
NAME LIKE '%SMITH%' or STATUS LIKE

'N_'

OR

HIREDATE < '1965-01-01' OR SALARY < 16000

AND
BETWEEN
IN (X, Y, Z)

HIREDATE < '1965-01-01' AND SALARY < 16000


SALARY BETWEEN 20000 AND 40000
DEPTNO IN ('B01', 'C01', 'D01')

Pode-se tambm pesquisar por linhas que NO satisfaam as condies, usando a palavrachave NOT antes de especificar a condio.
FUNES
SINTAXE

DESCRIO / EXEMPLO
Retorna a mdia
AVG(SALARIO)
COUNT([DISTINCT] [ALL] expressao/*) Retorna a quantidade (quantas vezes no
nulo)
COUNT(SALARIO)
HEX(coluna)
Retorna o contedo, em hexadecimal, da coluna
especificada
HEX(CD_AGE) = 00000A
MAX([DISTINCT] [ALL] expressao)
Retorna o valor mximo
MAX(SALARIO)
MIN([DISTINCT] [ALL] expressao)
Retorna o valor minimo
MIN(SALARIO)
SUM([DISTINCT] [ALL] expressao)
Retorna a somatoria
SUM(SALARIO)
AVG([DISTINCT] [ALL] expressao)

Mais exemplos
Selecionar todas as colunas e linhas da tabela DB2T.ZZZ102_SLDCLI.
SELECT * FROM DB2T.ZZZ102_SLDCLI;
+-------------------------------------------------------------------------------------------------------------+
|
CD_AGE_SLD
|
CD_CLI
|
NM_CLI
|
TEL_CLI
|
VL_SDO_CLI
|
+-------------------------------------------------------------------------------------------------------------+
1_|
110 |
920 | MAURO LOPES
|
99106925 |
4550.00 |
2_|
110 |
900 | JOSE XAVIER MARQUES
|
99106688 |
565.30 |
3_|
80 |
130 | 123 oliveira 4
|
99190011 |
4233.09 |
4_|
40 |
320 | BIA MOREIRA FILHA
|
8563212 |
0.00 |
5_|
50 |
130 | VOLTAIRE DA SILVA
|
99103607 |
3550.70 |
6_|
40 |
120 | BIA MOREIRA
|
8563212 |
0.00 |
+-------------------------------------------------------------------------------------------------------------+
SUCCESSFUL RETRIEVAL OF
6 ROW(S)

Selecionar algumas colunas da tabela DB2T.ZZZ102_SLDCLI.


SELECT CD_AGE_SLD, CD_CLI FROM DB2T.ZZZ102_SLDCLI;
+---------------------------------+
|
CD_AGE_SLD
|
CD_CLI
|
+---------------------------------+
1_|
110 |
920 |
2_|
110 |
900 |
3_|
80 |
130 |
4_|
40 |
320 |
5_|
50 |
130 |
6_|
40 |
120 |
+---------------------------------+
SUCCESSFUL RETRIEVAL OF
6 ROW(S)

Selecionar determinadas linhas e todas as colunas da tabela


DB2T.ZZZ102_SLDCLI.
SELECT * FROM DB2T.ZZZ102_SLDCLI WHERE CD_CLI = 320;
+-------------------------------------------------------------------------------------------------------------+
|
CD_AGE_SLD
|
CD_CLI
|
NM_CLI
|
TEL_CLI
|
VL_SDO_CLI
|
+-------------------------------------------------------------------------------------------------------------+
1_|
40 |
320 | BIA MOREIRA FILHA
|
8563212 |
0.00 |
+-------------------------------------------------------------------------------------------------------------+
SUCCESSFUL RETRIEVAL OF
1 ROW(S)

Selecionar determinadas linhas e determinadas colunas da tabela


DB2T.ZZZ102_SLDCLI.
SELECT CD_CLI, NM_CLI FROM DB2T.ZZZ102_SLDCLI WHERE CD_CLI = 320;
+------------------------------------------------------+
|
CD_CLI
|
NM_CLI
|
+------------------------------------------------------+
1_|
320 | BIA MOREIRA FILHA
|
+------------------------------------------------------+
SUCCESSFUL RETRIEVAL OF
1 ROW(S)

Selecionar colunas

derivadas (sem nome)

SELECT NM_CLI, (VL_SDO_CLI + TEL_CLI)


FROM DB2T.ZZZ102_SLDCLI;
+----------------------------------------------------------+
|
NM_CLI
|
|
+----------------------------------------------------------+
1_| MAURO LOPES
|
99111475.00 |
2_| JOSE XAVIER MARQUES
|
99107253.30 |
3_| 123 oliveira 4
|
99194244.09 |
4_| BIA MOREIRA FILHA
|
8563212.00 |
5_| VOLTAIRE DA SILVA
|
99107157.70 |
6_| BIA MOREIRA
|
8563212.00 |
+----------------------------------------------------------+
SUCCESSFUL RETRIEVAL OF
6 ROW(S)

Selecionar colunas

eliminando duplicidade

SELECT DISTINCT CD_CLI


FROM DB2T.ZZZ102_SLDCLI;
+----------------+
|
CD_CLI
|
+----------------+
1_|
120 |
2_|
130 |
3_|
320 |
4_|
900 |
5_|
920 |
+----------------+
SUCCESSFUL RETRIEVAL OF

5 ROW(S)

Selecionar CD_AGE_SLD e os mnimo, mximo e mdia de VL_SDO_CLI


agrupados por CD_AGE_SLD.
SELECT

CD_AGE_SLD,
MIN(VL_SDO_CLI) AS MINIMO,
MAX(VL_SDO_CLI),
AVG(VL_SDO_CLI) AS MEDIA
FROM DB2T.ZZZ102_SLDCLI
GROUP BY CD_AGE_SLD;

+-------------------------------------------------------------------------------+
|
CD_AGE_SLD
|
MINIMO
|
|
MEDIA
|
+-------------------------------------------------------------------------------+
1_|
40 |
0.00 |
0.00 |
0.00 |
2_|
50 |
3550.70 |
3550.70 |
3550.70 |
3_|
80 |
4233.09 |
4233.09 |
4233.09 |
4_|
110 |
565.30 |
4550.00 |
2557.65 |
+-------------------------------------------------------------------------------+
SUCCESSFUL RETRIEVAL OF
4 ROW(S)

Selecionar CD_AGE_SLD e NM_CLI ordenados por nome.


SELECT CD_AGE_SLD, NM_CLI
FROM DB2T.ZZZ102_SLDCLI
ORDER BY NM_CLI;
+------------------------------------------------------+
|
CD_AGE_SLD
|
NM_CLI
|
+------------------------------------------------------+
1_|
40 | BIA MOREIRA
|
2_|
40 | BIA MOREIRA FILHA
|
3_|
110 | JOSE XAVIER MARQUES
|
4_|
110 | MAURO LOPES
|
5_|
50 | VOLTAIRE DA SILVA
|
6_|
80 | 123 oliveira 4
|
+------------------------------------------------------+
SUCCESSFUL RETRIEVAL OF

6 ROW(S)

Selecionar a quantidade de linhas de uma tabela.


SELECT COUNT(*)
FROM DB2T.ZZZ100_CADAGE;
+----------------+
|
|
+----------------+
1_|
33 |
+----------------+
SUCCESSFUL RETRIEVAL OF

1 ROW(S)

Selecionar a quantidade de linhas sem repetio de uma coluna de uma


tabela.
SELECT COUNT(DISTINCT NM_AGE)
FROM DB2T.ZZZ100_CADAGE;
+----------------+
|
|
+----------------+
1_|
29 |
+----------------+
SUCCESSFUL RETRIEVAL OF

1 ROW(S)

Selecionar a quantidade de linhas em que CD_AGE no nula.


SELECT COUNT(*)
FROM DB2T.ZZZ100_CADAGE
WHERE CD_AGE IS NOT NULL;
+----------------+
|
|
+----------------+
1_|
29 |
+----------------+
SUCCESSFUL RETRIEVAL OF

1 ROW(S)

Selecionar a quantidade de linhas em que CD_AGE nula.


SELECT COUNT(*)
FROM DB2T.ZZZ100_CADAGE
WHERE CD_AGE IS NULL;
+----------------+
|
|
+----------------+
1_|
0 |
+----------------+
SUCCESSFUL RETRIEVAL OF

1 ROW(S)

Selecionar todas as linhas da tabela EMP_ACT para EMPNO


(funcionrios) que tenham WORKDEPT = 'E11'.
SELECT *
FROM EMP_ACT
WHERE EMPNO IN
(SELECT EMPNO
FROM EMPLOYEE
WHERE WORKDEPT = 'E11')

Fazendo juno (JOIN) de duas ou mais tabelas


Efetuar Join das tabelas EMP_ACT e EMPLOYEE, selecionando todas as
colunas da tabela EMP_ACT, e a coluna LASTNAME da tabela EMPLOYEE.
SELECT EMP_ACT.*, LASTNAME
FROM EMP_ACT, EMPLOYEE
WHERE EMP_ACT.EMPNO = EMPLOYEE.EMPNO
Efetuar Join das tabelas EMPLOYEE e DEPARTMENT, selecionando EMPNO,
LASTNAME e WORKDEPT na tabela EMPLOYEE e DEPTNO na tabela DEPARTMENT,
de todos os funcionrios com BIRTHDATE anterior a 1930.
SELECT EMPNO, LASTNAME, WORKDEPT, DEPTNAME
FROM EMPLOYEE, DEPARTMENT
WHERE WORKDEPT = DEPTNO
AND YEAR(BIRTHDATE) < 1930
Inner join
Inclui as linhas em que o(s) campo(s) chave especificado(s) tem equivalente em ambas as tabelas.
Especificar as tabelas na clusula FROM, e especificar a condio na clusula WHERE ou na
clusula ON.
Na forma mais simples do inner join a condio coluna_tabela1 = colunma_tabela2 (chaves de
ambas as tabelas que devem coincidir).
SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT
FROM PARTS, PRODUCTS
WHERE PARTS.PROD# = PRODUCTS.PROD#;
ou
SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT
FROM PARTS INNER JOIN PRODUCTS
ON PARTS.PROD# = PRODUCTS.PROD#;
Full outer join
Inclui as linhas de ambas as tabelas que no tem correspondente uma na outra.
SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT
FROM PARTS FULL OUTER JOIN PRODUCTS
ON PARTS.PROD# = PRODUCTS.PROD#;

SELECT PART, SUPPLIER,

COALESCE(PARTS.PROD#, PRODUCTS.PROD#) AS PRODNUM, PRODUCT


FROM PARTS FULL OUTER JOIN PRODUCTS
ON PARTS.PROD# = PRODUCTS.PROD#;
Obs.: COALESCE (ou VALUE) a keyword do SQL que sinnimo de VALUE; uma funo
que retorna o primeiro contedo no nulo.
Left outer join
Inclui as linhas da tabela que especificada ANTES da clusula LEFT OUTER JOIN que no
tem correspondente na tabela especificada DEPOIS da clusula LEFT OUTER JOIN.
SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT, PRICE
FROM PARTS LEFT OUTER JOIN PRODUCTS
ON PARTS.PROD#=PRODUCTS.PROD#
AND PRODUCTS.PRICE>10.00;
Right outer join
Inclui as linhas da tabela que especificada DEPOIS da clusula RIGHT OUTER JOIN que no
tem correspondente na tabela especificada ANTES da clusula RIGHT OUTER JOIN.
SELECT PART, SUPPLIER, PRODUCTS.PROD#, PRODUCT, PRICE
FROM PARTS RIGHT OUTER JOIN PRODUCTS
ON PARTS.PROD# = PRODUCTS.PROD#
AND PRODUCTS.PRICE>10.00;

3b - COMANDO UPDATE
1 Utilizado para atualizar dados de colunas numa tabela.
2 - Pode-se alterar o contedo de um dado para NULL (delat-lo) ou usando uma expresso.
3 Se a clusula WHERE for omitida, sero alteradas TODAS as linhas.
4 Se houver algum erro durante a atualizao, ela interrompida, e as colunas j alteradas no
so restauradas.
5 Se o update for bem sucedido, colocado na a varivel SQLERRD(3) a quantidade de linhas
alteradas.
UPDATE DB2T.ZZZ102_SLDCLI
SET VL_SDO_CLI = 11
WHERE VL_SDO_CLI = 0;
***INPUT STATEMENT:
UPDATE DB2T.ZZZ102_SLDCLI
SET VL_SDO_CLI = 11
WHERE VL_SDO_CLI = 0;
RESULT OF SQL STATEMENT:
DSNT400I SQLCODE = 000, SUCCESSFUL EXECUTION
DSNT416I SQLERRD
= 0 0 2 -1 0 0 SQL DIAGNOSTIC INFORMATION
DSNT416I SQLERRD
= X'00000000' X'00000000' X'00000002' X'FFFFFFFF'
INFORMATION
SUCCESSFUL UPDATE
OF
2 ROW(S)

SELECT CD_CLI, VL_SDO_CLI


FROM DB2T.ZZZ102_SLDCLI;
***INPUT STATEMENT:
SELECT CD_CLI, VL_SDO_CLI
FROM DB2T.ZZZ102_SLDCLI;
+-------------------------------------+
|
CD_CLI
|
VL_SDO_CLI
|
+-------------------------------------+
1_|
920 |
4550.00 |
2_|
900 |
565.30 |
3_|
130 |
4233.09 |
4_|
320 |
11.00 |
5_|
130 |
3550.70 |
6_|
120 |
11.00 |
+-------------------------------------+
SUCCESSFUL RETRIEVAL OF
6 ROW(S)

3c - COMANDO INSERT
Utilizado para inserir linhas numa tabela.
INSERT INTO DB2T.ZZZ100_CADAGE
(CD_AGE, NM_AGE, END_AGE, TEL_AGE)
VALUES (77,'PARI','RUA XX 555',5555678);
PAGE
1
***INPUT STATEMENT:
INSERT INTO DB2T.ZZZ100_CADAGE
(CD_AGE, NM_AGE, END_AGE, TEL_AGE)
VALUES (77,'PARI','RUA XX 555',5555678);
RESULT OF SQL STATEMENT:
DSNT400I SQLCODE = 000, SUCCESSFUL EXECUTION
DSNT416I SQLERRD
= 0 0 1 -1 0 0 SQL DIAGNOSTIC INFORMATION
DSNT416I SQLERRD
= X'00000000' X'00000000' X'00000001' X'FFFFFFFF'
INFORMATION
SUCCESSFUL INSERT
OF
1 ROW(S)
***INPUT STATEMENT:
SELECT *
FROM DB2T.ZZZ100_CADAGE
WHERE CD_AGE = 77;
+-----------------------------------------------------------------------------------+
|
CD_AGE
|
NM_AGE
|
END_AGE
| TEL_AGE
|
+-----------------------------------------------------------------------------------+
1_|
77 | PARI
| RUA XX 555
|
5555678 |
+-----------------------------------------------------------------------------------+

SUCCESSFUL RETRIEVAL OF

1 ROW(S)

3d - COMANDO DELETE
Utilizado para ELIMINAR linhas de uma tabela.
DELETE FROM DB2T.ZZZ100_CADAGE
WHERE CD_AGE = 77;
***INPUT STATEMENT:
DELETE FROM DB2T.ZZZ100_CADAGE
WHERE CD_AGE = 77;
RESULT OF SQL STATEMENT:
DSNT400I SQLCODE = 000, SUCCESSFUL EXECUTION
DSNT416I SQLERRD
= 0 0 1 -1 0 0 SQL DIAGNOSTIC INFORMATION
DSNT416I SQLERRD
= X'00000000' X'00000000' X'00000001' X'FFFFFFFF'
INFORMATION
SUCCESSFUL DELETE
OF
1 ROW(S)
***INPUT STATEMENT:
SELECT *
FROM DB2T.ZZZ100_CADAGE
WHERE CD_AGE = 77;
SUCCESSFUL RETRIEVAL OF
0 ROW(S)

4 DB2 em um programa COBOL


FONTE COBOL COM COMANDOS SQL
EMBEDDED
(delimitados por
EXEC SQL / END-EXEC)

(PR-COMPILADOR)

Mensagens
(erros / resultados da
anlise dos comandos)

FONTE COBOL COM COMANDOS SQL


TRANSFORMADOS EM COMANDOS
COBOL CALL

COMPILADOR COBOL
NORMAL

Mensagens
(erros / resultados da
compilao)

PROGRAMA OBJETO

LINKEDITOR

PROGRAMA EXECUTVEL

Mensagens
(erros / resultados da
linkedio)

EXEMPLO :

FONTE
ID DIVISION.
PROGRAM-ID. TESTE.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT ABNA215

ASSIGN

TO ABNA215.

*----------------------------------------------------------------DATA DIVISION.
FILE SECTION.
FD ABNA215.
01 ABNA215-FD PIC X(70).
*----------------------------------------------------------------WORKING-STORAGE SECTION.
01
W-LIDOS-ABNA215
PIC 9(0006) VALUE ZEROS.
EXEC SQL
INCLUDE SQLCA
END-EXEC.
*----------------------------------------------------------------PROCEDURE DIVISION.
ROTINA-PRINCIPAL SECTION.
EXEC SQL
WHENEVER SQLERROR CONTINUE
END-EXEC.
OPEN INPUT ABNA215.
LER.
READ ABNA215 AT END GO TO FIM-ABNA215.
ADD 1 TO W-LIDOS-ABNA215.
DISPLAY 'LISO O REGISTRO DE NUMERO ' W-LIDOS-ABNA215.
GO TO LER.
FIM-ABNA215.
DISPLAY 'ACABOU O ARQUIVO'.
GOBACK.
*-----------------------------------------------------------------

COMP001.PC.SYSPRINT
DB2 SQL PRECOMPILER
VERSION 5 REL. 1.0
OPTIONS SPECIFIED: HOST(COB2),APOST,SOURCE
OPTIONS USED - SPECIFIED OR DEFAULTED
APOST
APOSTSQL
ATTACH(TSO)
CONNECT(2)
DEC(15)
FLAG(I)
HOST(COB2)
NOT KATAKANA
LINECOUNT(60)
MARGINS(8,72)
ONEPASS
OPTIONS
PERIOD
SOURCE
STDSQL(NO)
SQL(DB2)
NOXREF
DB2 SQL PRECOMPILER
VERSION 5 REL. 1.0
1
ID DIVISION.
2
PROGRAM-ID. TESTE.
3
ENVIRONMENT DIVISION.
4
CONFIGURATION SECTION.
5
INPUT-OUTPUT SECTION.
6
7
FILE-CONTROL.
8
9
SELECT ABNA215
ASSIGN
TO ABNA215.
10
11
*---------------------------------------------------12
13
DATA DIVISION.
14
FILE SECTION.
15
16
FD ABNA215.
17
01 ABNA215-FD PIC X(70).
18
*---------------------------------------------------19
20
WORKING-STORAGE SECTION.
21
01
W-LIDOS-ABNA215
PIC 9(0006) VALUE
22
EXEC SQL
23
INCLUDE SQLCA
24
END-EXEC.
25
*---------------------------------------------------26
27
PROCEDURE DIVISION.
28
ROTINA-PRINCIPAL SECTION.
29
EXEC SQL
30
WHENEVER SQLERROR CONTINUE
31
END-EXEC.
32
OPEN INPUT ABNA215.
33
LER.

34
READ ABNA215 AT END GO TO FIM-ABNA215.
35
ADD 1 TO W-LIDOS-ABNA215.
36
DISPLAY 'LISO O REGISTRO DE NUMERO ' W-LIDOS-ABN
37
GO TO LER.
38
FIM-ABNA215.
39
DISPLAY 'ACABOU O ARQUIVO'.
40
GOBACK.
41
42
*---------------------------------------------------DB2 SQL PRECOMPILER
STATISTICS
SOURCE STATISTICS
SOURCE LINES READ: 42
NUMBER OF SYMBOLS: 3
SYMBOL TABLE BYTES EXCLUDING ATTRIBUTES: 1296
THERE WERE 0 MESSAGES FOR THIS PROGRAM.
THERE WERE 0 MESSAGES SUPPRESSED BY THE FLAG OPTION.
141200 BYTES OF STORAGE WERE USED BY THE PRECOMPILER.
RETURN CODE IS 0

COMP001.PC.SYSTERM
SOURCE STATISTICS
SOURCE LINES READ: 42
NUMBER OF SYMBOLS: 3
SYMBOL TABLE BYTES EXCLUDING ATTRIBUTES: 1296
THERE WERE 0 MESSAGES FOR THIS PROGRAM.
THERE WERE 0 MESSAGES SUPPRESSED BY THE FLAG OPTION.
141200 BYTES OF STORAGE WERE USED BY THE PRECOMPILER.
RETURN CODE IS 0

PP 5688-197 IBM COBOL for MVS and VM


Invocation parameters:
LIB,OBJECT,APOST,OFFSET
Options in effect:
NOADATA
ADV
APOST
NOAWO
BUFSIZE(4096)
NOCMPR2
NOCOMPILE(S)
NOCURRENCY
DATA(31)
NODBCS
NODECK
NODUMP
NODYNAM
NOEXIT
NOFASTSRT
FLAG(I)
NOFLAGMIG
NOFLAGSTD
NOIDLGEN
INTDATE(ANSI)

1.2.1

LANGUAGE(EN)
LIB
LINECOUNT(60)
NOLIST
NOMAP
NONAME
NONUMBER
NUMPROC(NOPFD)
OBJECT
OFFSET
NOOPTIMIZE
OUTDD(SYSOUT)
PGMNAME(COMPAT)
NORENT
RMODE(AUTO)
SEQUENCE
SIZE(MAX)
SOURCE
SPACE(1)
NOSSRANGE
NOTERM
NOTEST
TRUNC(STD)
NOTYPECHK
NOVBREF
NOWORD
NOXREF
ZWB
PP 5688-197 IBM COBOL for MVS and VM
1.2.1
TESTE
LineID PL SL ----+-*A-1-B--+----2----+----3----+----4----+----5----+000001
ID DIVISION.
000002
PROGRAM-ID. TESTE.
000003
ENVIRONMENT DIVISION.
000004
CONFIGURATION SECTION.
000005
INPUT-OUTPUT SECTION.
000006
000007
FILE-CONTROL.
000008
000009
SELECT ABNA215
ASSIGN
TO ABNA215.
000010
000011
*------------------------------------------------000012
000013
DATA DIVISION.
000014
FILE SECTION.
000015
000016
FD ABNA215.
000017
01 ABNA215-FD PIC X(70).
000018
*------------------------------------------------000019
000020
WORKING-STORAGE SECTION.
000021
01
W-LIDOS-ABNA215
PIC 9(0006) VAL
000022
*****
EXEC SQL
000023
*****
INCLUDE SQLCA
000024
*****
END-EXEC.
000025
01 SQLCA.
000026
05 SQLCAID
PIC X(8).

000027
05 SQLCABC
PIC S9(9) COMP-4.
000028
05 SQLCODE
PIC S9(9) COMP-4.
000029
05 SQLERRM.
000030
49 SQLERRML PIC S9(4) COMP-4.
000031
49 SQLERRMC PIC X(70).
000032
05 SQLERRP
PIC X(8).
000033
05 SQLERRD
OCCURS 6 TIMES
000034
PIC S9(9) COMP-4.
000035
05 SQLWARN.
000036
10 SQLWARN0 PIC X.
000037
10 SQLWARN1 PIC X.
000038
10 SQLWARN2 PIC X.
000039
10 SQLWARN3 PIC X.
000040
10 SQLWARN4 PIC X.
000041
10 SQLWARN5 PIC X.
000042
10 SQLWARN6 PIC X.
000043
10 SQLWARN7 PIC X.
000044
05 SQLEXT.
000045
10 SQLWARN8 PIC X.
000046
10 SQLWARN9 PIC X.
000047
10 SQLWARNA PIC X.
000048
10 SQLSTATE PIC X(5).
000049
*------------------------------------------------000050
000051
77 SQL-TEMP
PIC X(18).
000052
77 SQL-NULL
PIC S9(9) COMP-4 VALUE +0.
000053
77 SQL-INIT-FLAG PIC S9(4) COMP-4 VALUE +0.
000054
88 SQL-INIT-DONE VALUE +1.
000055
000056
PROCEDURE DIVISION.
000057
DSNSQL SECTION.
PP 5688-197 IBM COBOL for MVS and VM
1.2.1
TESTE
LineID PL SL ----+-*A-1-B--+----2----+----3----+----4----+----5----+000058
SQL-SKIP.
000059
GO TO SQL-INIT-END.
000060
SQL-INITIAL.
000061
MOVE 1 TO SQL-INIT-FLAG.
000062
SQL-INIT-END.
000063
CONTINUE.
000064
000065
ROTINA-PRINCIPAL SECTION.
000066
*****EXEC SQL
000067
*****
WHENEVER SQLERROR CONTINUE
000068
*****END-EXEC.
000069
OPEN INPUT ABNA215.
000070
LER.
000071
READ ABNA215 AT END GO TO FIM-ABNA215.
000072
ADD 1 TO W-LIDOS-ABNA215.
000073
DISPLAY 'LISO O REGISTRO DE NUMERO ' W-LIDOS000074
GO TO LER.
000075
FIM-ABNA215.
000076
DISPLAY 'ACABOU O ARQUIVO'.
000077
GOBACK.
000078
000079
*------------------------------------------------PP 5688-197 IBM COBOL for MVS and VM
1.2.1
TESTE

PROGRAM GLOBAL TABLE BEGINS AT LOCATION 0000FC FOR 00000C BYTES


THE PGT CONTAINS 000001 CELL(S) FOR ADDRESSABILITY TO THE CGT
PBL1
AT LOCATION 000302 FOR LINE 57
LITERAL POOL MAP FOR SYSTEM LITERALS IN THE PGT:
0000FC (LIT+0)
00000001
PP 5688-197 IBM COBOL for MVS and VM
1.2.1
TESTE
CONSTANT GLOBAL TABLE BEGINS AT LOCATION 000108 FOR 0000F7 BYTES
LITERAL POOL MAP FOR LITERALS IN THE CGT:
000110 (LIT+0)
FFFFFFFC 00001000 00000001 D3C9E2D6 40D640D9 C5C7C9E
000130 (LIT+32)
E4D4C5D9 D640C1C3 C1C2D6E4 40D640C1 D9D8E4C9 E5D6E3C
000150 (LIT+64)
00000001 00000128 00000001 0000012C 00000001 0000000
000170 (LIT+96)
00000000 00000000 00000000 00000000 80000000 4000000
000190 (LIT+128)
04000000 40000000 00000000 00000000 00000000 4000000
0001B0 (LIT+160)
08000004 003E0140 00001008 00000400 2EFF0140 00001A0
0001D0 (LIT+192)
06090001 280000FF 80000180 00400000 000040C0 0001400
0001F0 (LIT+224)
C0000508 00000400 3E090001 300000
LINE # HEXLOC VERB
LINE # HEXLOC VERB
000059 00030E GO
000061 000312 MOVE
000069 000318 OPEN
000071 000334 READ
000072 000376 ADD
000073 000390 DISPLAY
000076 0003A2 DISPLAY
000077 0003B0 GOBACK
PP 5688-197 IBM COBOL for MVS and VM
1.2.1
TESTE
*** TGT MEMORY MAP ***
PGMLOC TGTLOC
000410
000458
00045C
000460
000461
000464
000468
00046C
000470
000474
000478
00047C
000480
000484
000488
00048A
00048C
00048E
000490
000494
000498
000499
00049A
00049C
0004A0
0004A4
0004A8
0004B0
0004B8

000000
000048
00004C
000050
000051
000054
000058
00005C
000060
000064
000068
00006C
000070
000074
000078
00007A
00007C
00007E
000080
000084
000088
000089
00008A
00008C
000090
000094
000098
0000A0
0000A8

RESERVED - 72 BYTES
TGT IDENTIFIER
RESERVED - 4 BYTES
TGT LEVEL INDICATOR
RESERVED - 3 SINGLE BYTE FIELDS
32 BIT SWITCH
POINTER TO RUNCOM
POINTER TO COBVEC
POINTER TO PROGRAM DYNAMIC BLOCK TABLE
NUMBER OF FCB'S
WORKING-STORAGE LENGTH
RESERVED - 4 BYTES
ADDRESS OF IGZESMG WORK AREA
ADDRESS OF 1ST GETMAIN BLOCK (SPACE MGR)
RESERVED - 2 BYTES
RESERVED - 2 BYTES
RESERVED - 2 BYTES
MERGE FILE NUMBER
ADDRESS OF CEL COMMON ANCHOR AREA
LENGTH OF TGT
RESERVED - 1 SINGLE BYTE FIELD
PROGRAM MASK USED BY THIS PROGRAM
RESERVED - 2 SINGLE BYTE FIELDS
NUMBER OF SECONDARY FCB CELLS
LENGTH OF THE ALTER VN(VNI) VECTOR
COUNT OF NESTED PROGRAMS IN COMPILE UNIT
DDNAME FOR DISPLAY OUTPUT
RESERVED - 8 BYTES
POINTER TO COM-REG SPECIAL REGISTER

0004BC
0004F0
0004F4
0004F8
0004FC
000500
000504
000508
00050C
000510
000514
000518
00051C
000520
000524
000528
00052C

0000AC
0000E0
0000E4
0000E8
0000EC
0000F0
0000F4
0000F8
0000FC
000100
000104
000108
00010C
000110
000114
000118
00011C

CALC ROUTINE REGISTER SAVE AREA


ALTERNATE COLLATING SEQUENCE TABLE PTR.
ADDRESS OF SORT G.N. ADDRESS BLOCK
ADDRESS OF PGT
CURRENT INTERNAL PROGRAM NUMBER
POINTER TO 1ST IPCB
ADDRESS OF THE CLLE FOR THIS PROGRAM
POINTER TO ABEND INFORMATION TABLE
POINTER TO TEST INFO FIELDS IN THE TGT
ADDRESS OF START OF COBOL PROGRAM
POINTER TO ALTER VNI'S IN CGT
POINTER TO ALTER VN'S IN TGT
POINTER TO FIRST PBL IN THE PGT
POINTER TO FIRST FCB CELL
WORKING-STORAGE ADDRESS
POINTER TO FIRST SECONDARY FCB CELL
POINTER TO STATIC CLASS INFO BLOCK

*** VARIABLE PORTION OF TGT ***


000530 000120 BASE LOCATORS FOR SPECIAL REGISTERS
000538 000128 BASE LOCATORS FOR WORKING-STORAGE
00053C 00012C BASE LOCATORS FOR LINKAGE-SECTION
000540 000130 BASE LOCATORS FOR FILES
000544 000134 FCB CELLS
000548 000138 INTERNAL PROGRAM CONTROL BLOCKS
PP 5688-197 IBM COBOL for MVS and VM
1.2.1

TESTE

*** DSA MEMORY MAP ***


DSALOC
000000
00004C
000058
000080

REGISTER SAVE AREA


STACK NAB (NEXT AVAILABLE BYTE)
ADDRESS OF INLINE-CODE PRIMARY DSA
PROCEDURE DIVISION RETURNING VALUE

*** VARIABLE PORTION OF DSA ***


000084
00008C
000098

BACKSTORE CELLS FOR SYMBOLIC REGISTERS


VARIABLE NAME (VN) CELLS FOR PERFORM
TEMPORARY STORAGE-2

TGT
LOCATED AT 000410 FOR 0000014C BYTES
DCB00001 LOCATED AT 000560 FOR 00000060 BYTES
FCB00001 LOCATED AT 0005C0 FOR 00000100 BYTES
GDT00001 LOCATED AT 0006C0 FOR 000000A0 BYTES
SPEC-REG LOCATED AT 000760 FOR 00000049 BYTES
WRK-STOR LOCATED AT 0007B0 FOR 000000B2 BYTES
DSA
WILL BE ALLOCATED FOR 000000A8 BYTES
PP 5688-197 IBM COBOL for MVS and VM
1.2.1
LineID Message code Message text

TESTE

16 IGYGR1216-I
A "RECORDING MODE" of "F" was assumed for file "ABN
Messages
Total
Informational
Warning
Error
Severe
Termi
Printed:
1
1
* Statistics for COBOL program TESTE:

*
Source records = 79
*
Data Division statements = 29
*
Procedure Division statements = 11
End of compilation 1, program TESTE, highest severity 0.
Return code 0

BIND.SYSTSPRT
READY
DSN SYSTEM(DB1D)
DSN
RUN PROGRAM(DSNTIAD) PLAN(DSNTEP2)
LIB('SYS1.DSNDB1D.RUNLIB.LOA
DSN
BIND PACKAGE (COLDB01) MEMBER(TESTE) ISO(CS) ACTION(REP)
OWNER(DB2
DSNT212I # BIND AUTHORIZATION ID DB2DCIP IN THE OWNER KEYWORD
IS INVALID
DSNT233I # UNSUCCESSFUL BIND FOR
PACKAGE = ABN0.COLDB01.TESTE.()
DSN
END

BIND.SYSPRINT
DSNTIAD

- SAMPLE DYNAMIC SQL PROGRAM 2.0

Programa

Working-Storage Section
reas diversas (ex.: SQLCA)

Procedure Division

.
.
. instrues diversas. Ex.:
CALL xxxxx

.
.
.

REAS
Declarao na WORKING-STORAGE SECTION

!!!

Programa
Working-Storage Section
SQLCA

Procedure Division

SQLCA = SQL Communication rea


Declarao (na WORKING-STORAGE SECTION

!!!):

EXEC SQL
INCLUDE SQLCA
END-SQL.
Name
sqlcaid
sqlcabc
sqlcode

sqlerrml
sqlerrmc

sqlerrp

sqlerrd

Data Type
CHAR(8)

Field Values
An "eye catcher" for storage dumps containing 'SQLCA'. The
sixth byte is 'L' if line number information is returned from
parsing an SQL procedure body.
INTEGER
Contains the length of the SQLCA, 136.
INTEGER
Contains the SQL return code. For specific meanings of SQL
return codes, see the message section of the Message
Reference.
Code
Means
0
Successful execution (although one or more
SQLWARN indicators may be set).
positive Successful execution, but with a warning
condition.
negative Error condition.
SMALLINT
Length indicator for sqlerrmc, in the range 0 through 70. 0
means that the value of sqlerrmc is not relevant.
VARCHAR (70) Contains one or more tokens, separated by X'FF', that are
substituted for variables in the descriptions of error conditions.
This field is also used when a successful connection is
completed.
When a NOT ATOMIC compound SQL statement is issued, it
may contain information on up to 7 errors.
For specific meanings of SQL return codes, see the message
section of the Message Reference.
CHAR(8)
Begins with a three-letter identifier indicating the product,
followed by five digits indicating the version, release, and
modification level of the product. For example, SQL07010
means DB2 Universal Database Version 7 Release 1
Modification level 0.
If SQLCODE indicates an error condition, then this field
identifies the module that returned the error.
This field is also used when a successful connection is
completed.
ARRAY
Six INTEGER variables that provide diagnostic information.
These values are generally empty if there are no errors, except
for sqlerrd(6) from a partitioned database.

sqlerrd(1) INTEGER

If connection is invoked and successful, contains the maximum


expected difference in length of mixed character data (CHAR

sqlerrd(2) INTEGER

sqlerrd(3) INTEGER

sqlerrd(4) INTEGER

sqlerrd(5) INTEGER

data types) when converted to the database code page from


the application code page. A value of 0 or 1 indicates no
expansion; a value greater than 1 indicates a possible
expansion in length; a negative value indicates a possible
contraction. a
On successful return from an SQL procedure, contains the
return status value from the SQL procedure.
If connection is invoked and successful, contains the maximum
expected difference in length of mixed character data (CHAR
data types) when converted to the application code page from
the database code page. A value of 0 or 1 indicates no
expansion; a value greater than 1 indicates a possible
expansion in length; a negative value indicates a possible
contraction. a If the SQLCA results from a NOT ATOMIC
compound SQL statement that encountered one or more
errors, the value is set to the number of statements that failed.
If PREPARE is invoked and successful, contains an estimate of
the number of rows that will be returned. After INSERT,
UPDATE, and DELETE, contains the actual number of rows
affected. If compound SQL is invoked, contains an
accumulation of all sub-statement rows. If CONNECT is
invoked, contains 1 if the database can be updated; 2 if the
database is read only.
If CREATE PROCEDURE for an SQL procedure is invoked and
an error is encountered parsing the SQL procedure body,
contains the line number where the error was encountered.
The sixth byte of sqlcaid must be 'L' for this to be a valid line
number.
If PREPARE is invoked and successful, contains a relative cost
estimate of the resources required to process the statement. If
compound SQL is invoked, contains a count of the number of
successful sub-statements. If CONNECT is invoked, contains 0
for a one-phase commit from a down-level client; 1 for a onephase commit; 2 for a one-phase, read-only commit; and 3 for
a two-phase commit.
Contains the total number of rows deleted, inserted, or updated
as a result of both:

The enforcement of constraints after a successful delete


operation

The processing of triggered SQL statements from


activated triggers.

If compound SQL is invoked, contains an accumulation of the


number of such rows for all substatements. In some cases
when an error is encountered, this field contains a negative
value that is an internal error pointer. If CONNECT is invoked,
contains an authentication type value of 0 for a server

sqlerrd(6) INTEGER

sqlwarn

Array

sqlwarn0

CHAR(1)

sqlwarn1

CHAR(1)

sqlwarn2

CHAR(1)

sqlwarn3

CHAR(1)

sqlwarn4

CHAR(1)

sqlwarn5
sqlwarn6

CHAR(1)
CHAR(1)

sqlwarn7

CHAR(1)

sqlwarn8

CHAR(1)

sqlwarn9

CHAR(1)

sqlwarn10

CHAR(1)

sqlstate

CHAR(5)

authentication; 1 for client authentication; 2 for authentication


using DB2 Connect; 3 for DCE security services authentication;
255 for unspecified authentication.
For a partitioned database, contains the partition number of the
partition that encountered the error or warning. If no errors or
warnings were encountered, this field contains the partition
number of the coordinator node. The number in this field is the
same as that specified for the partition in the db2nodes.cfg file.
A set of warning indicators, each containing a blank or W. If
compound SQL is invoked, contains an accumulation of the
warning indicators set for all substatements.
Blank if all other indicators are blank; contains W if at least one
other indicator is not blank.
Contains W if the value of a string column was truncated when
assigned to a host variable. Contains N if the null terminator
was truncated.
Contains A if the CONNECT or ATTACH is successful and the
authID for the connection is longer than 8 bytes.
Contains W if null values were eliminated from the argument of
a function. b
Contains W if the number of columns is not equal to the
number of host variables.
Contains W if a prepared UPDATE or DELETE statement does
not include a WHERE clause.
Reserved for future use.
Contains W if the result of a date calculation was adjusted to
avoid an impossible date.
Reserved for future use.
If CONNECT is invoked and successful, contains 'E' if the
DYN_QUERY_MGMT database configuration parameter is
enabled.
Contains W if a character that could not be converted was
replaced with a substitution character.
Contains W if arithmetic expressions with errors were ignored
during column function processing.
Contains W if there was a conversion error when converting a
character data value in one of the fields in the SQLCA.
A return code that indicates the outcome of the most recently
executed SQL statement.

Area para receber os return codes do SQL :


77

WS-SQLCODE

PIC 9999.

Importante o picture ser desta


forma, para aparecer o sinal no
display !!!!!

Exemplo de uso (na PROCEDURE DIVISION) :


EXEC SQL
Chamada de qualquer funo ......
END-SQL.
IF SQLCODE NOT = ZERO
MOVE SQLCODE TO WS-SQLCODE
DISPLAY ERRO NO SQL. CODIGO= WS-SQLCODE
STOP RUN.

Declaraes de reas para diversas funes :


Declarao (na WORKING-STORAGE SECTION
EXEC SQL
DECLARE ......
END-SQL.
Exemplo de uso

EXEC SQL
DECLARE ......
END-SQL.

!!!):

ROTINAS
Chamada na PROCEDURE DIVISION

!!!

IKJEFT01
Rotina aaaaaaaa

Rotina cccccccc

Rotina bbbbbbbb

Rotina dddddddd

Programa
Working-Storage Section
SQLCA

Procedure Division

.
.
.
CALL xxxxx

.
.
.

Rotina eeeeeeee

Rotina xxxxx

SQLERROR
Normalmente chamada no incio (primeira coisa).
Deixa o programa controlar o que feito quando
ocorrer em qualquer cdigo de retorno.
EXEC SQL
WHENEVER SQLERROR commandos imperativos
END-SQL.

5 FUNES e DATE FORMATS


SINTAXE

DESCRIO / EXEMPLO
Retorna a mdia
AVG(SALARIO)
COUNT([DISTINCT] [ALL] expressao/*) Retorna a quantidade (quantas vezes no
nulo)
COUNT(SALARIO)
HEX(coluna)
Retorna o contedo, em hexadecimal, da coluna
especificada
HEX(CD_AGE) = 00000A
MAX([DISTINCT] [ALL] expressao)
Retorna o valor mximo
MAX(SALARIO)
MIN([DISTINCT] [ALL] expressao)
Retorna o valor minimo
MIN(SALARIO)
SUM([DISTINCT] [ALL] expressao)
Retorna a somatoria
SUM(SALARIO)
AVG([DISTINCT] [ALL] expressao)

6 SQLCODES
000
-007
-010
012
-029
-060
-079
-084
-097
098
100
-101
-102
-103
-104
-105
-107
-108
-109
110
-110
111
-111
-112
-113
-114
-115
117
-117
-118
-119
-120
-121
-122
-123
-125
-126
-127
-128
-129

SUCCESSFUL EXECUTION
STATEMENT CONTAINS THE ILLEGAL CHARACTER
THE STRING CONSTANT BEGINNING IS NOT TERMINATED
THE UNQUALIFIED COLUMN NAME WAS INTERPRETED AS A CORRELATED REFERENCE
INTO CLAUSE REQUIRED
INVALID SPECIFICATION :
QUALIFIER FOR DECLARED GLOBAL TEMPORARY TABLE OR INDEX MUST BE SESSION,
NOT
UNACCEPTABLE SQL STATEMENT
THE USE OF LONG VARCHAR OR LONG VARGRAPHIC IS NOT ALLOWED IN THIS CONTEXT
A DYNAMIC SQL STATEMENT ENDS WITH A SEMICOLON
NOT FOUND:ROW NOT FOUND FOR FETCH, UPDATE, OR DELETE, OR THE RESULT OF A
QUERY IS AN EMPTY TABLE
THE STATEMENT IS TOO LONG OR TOO COMPLEX
LITERAL STRING IS TOO LONG. STRING BEGINS
IS AN INVALID NUMERIC LITERAL
ILLEGAL SYMBOL "". SOME SYMBOLS THAT MIGHT BE LEGAL ARE:
INVALID STRING
THE NAME IS TOO LONG. MAXIMUM ALLOWABLE SIZE IS
THE NAME IS QUALIFIED INCORRECTLY
CLAUSE IS NOT PERMITTED
SQL UPDATE TO A DATA CAPTURE TABLE NOT SIGNALED TO ORIGINATING SUBSYSTEM
INVALID HEXADECIMAL LITERAL BEGINNING
THE SUBPAGES OPTION IS NOT SUPPORTED FOR TYPE 2 INDEXES
A COLUMN FUNCTION DOES NOT INCLUDE A COLUMN NAME
THE OPERAND OF A COLUMN FUNCTION IS ANOTHER COLUMN FUNCTION
INVALID CHARACTER FOUND IN: . REASON CODE
THE LOCATION NAME DOES NOT MATCH THE CURRENT SERVER
A PREDICATE IS INVALID BECAUSE THE COMPARISON OPERATOR IS FOLLOWED BY A
PARENTHESIZED LIST OR BY ANY OR ALL WITHOUT A SUBQUERY
THE NUMBER OF INSERT VALUES IS NOT THE SAME AS THE NUMBER OF OBJECT
COLUMNS
THE NUMBER OF ASSIGNED VALUES IS NOT THE SAME AS THE NUMBER OF SPECIFIED
OR IMPLIED COLUMNS
THE OBJECT TABLE OR VIEW OF THE DELETE OR UPDATE STATEMENT IS ALSO
IDENTIFIED IN A FROM CLAUSE
A COLUMN IDENTIFIED IN A HAVING CLAUSE IS NOT INCLUDED IN THE GROUP BY
CLAUSE
A WHERE CLAUSE, SET CLAUSE, VALUES CLAUSE, OR A SET ASSIGNMENT STATEMENT
INCLUDES A COLUMN FUNCTION
THE COLUMN IS IDENTIFIED MORE THAN ONCE IN THE INSERT OR UPDATE OR SET
TRANSITION VARIABLE STATEMENT
A SELECT STATEMENT WITH NO GROUP BY CLAUSE CONTAINS A COLUMN NAME AND A
COLUMN FUNCTION IN THE SELECT CLAUSE OR A COLUMN NAME IS CONTAINED IN THE
SELECT CLAUSE BUT NOT IN THE GROUP BY CLAUSE
THE PARAMETER IN POSITION IN THE FUNCTION MUST BE A CONSTANT OR KEYWORD
AN INTEGER IN THE ORDER BY CLAUSE DOES NOT IDENTIFY A COLUMN OF THE RESULT
THE SELECT STATEMENT CONTAINS BOTH AN UPDATE CLAUSE AND AN ORDER BY
CLAUSE
DISTINCT IS SPECIFIED MORE THAN ONCE IN A SUBSELECT
INVALID USE OF NULL IN A PREDICATE
THE STATEMENT CONTAINS TOO MANY TABLE NAMES

-130
-131
-132
-133
-134
-136
-137
-138
-142
-144
-147
-148
-150
-151
-152
-153
-154
-156
-157
-158

-159
-160
-161
162
-164
-170
-171
-173
-180
-181
-182
-183
-184
-185
-186
-187

THE ESCAPE CLAUSE CONSISTS OF MORE THAN ONE CHARACTER, OR THE STRING
PATTERN CONTAINS AN INVALID OCCURRENCE OF THE ESCAPE CHARACTER
STATEMENT WITH LIKE PREDICATE HAS INCOMPATIBLE DATA TYPES
AN OPERAND OF IS NOT VALID
A COLUMN FUNCTION IN A SUBQUERY OF A HAVING CLAUSE IS INVALID BECAUSE ALL
COLUMN REFERENCES IN ITS ARGUMENT ARE NOT CORRELATED TO THE GROUP BY
RESULT THAT THE HAVING CLAUSE IS APPLIED TO
IMPROPER USE OF LONG STRING COLUMN OR AN EXPRESSION OF MAXIMUM LENGTH
GREATER THAN 255
SORT CANNOT BE EXECUTED BECAUSE THE SORT KEY LENGTH IS GREATER THAN 4000
BYTES
THE LENGTH RESULTING FROM IS GREATER THAN
THE SECOND OR THIRD ARGUMENT OF THE SUBSTR FUNCTION IS OUT OF RANGE
THE SQL STATEMENT IS NOT SUPPORTED
INVALID SECTION NUMBER
ALTER FUNCTION FAILED BECAUSE SOURCE FUNCTIONS CANNOT BE ALTERED
THE SOURCE TABLE CANNOT BE RENAMED OR ALTERED
THE OBJECT OF THE INSERT, DELETE, OR UPDATE STATEMENT IS A VIEW OR
TRANSITION TABLE FOR WHICH THE REQUESTED OPERATION IS NOT PERMITTED
THE UPDATE STATEMENT IS INVALID BECAUSE THE CATALOG DESCRIPTION OF COLUMN
INDICATES THAT IT CANNOT BE UPDATED
THE DROP CLAUSE IN THE ALTER STATEMENT IS INVALID BECAUSE IS A
THE STATEMENT IS INVALID BECAUSE THE VIEW OR TABLE DEFINITION DOES NOT
INCLUDE A UNIQUE NAME FOR EACH COLUMN
THE STATEMENT IS INVALID BECAUSE THE VIEW OR TABLE DEFINITION IS NOT VALID
THE STATEMENT DOES NOT IDENTIFY A TABLE
ONLY A TABLE NAME CAN BE SPECIFIED IN A FOREIGN KEY CLAUSE. IS NOT THE NAME
OF A TABLE
THE NUMBER OF COLUMNS SPECIFIED FOR THE VIEW IS NOT THE SAME AS THE
NUMBER OF COLUMNS SPECIFIED BY THE SELECT CLAUSE, OR THE NUMBER OF
COLUMNS SPECIFIED IN THE CORRELATION CLAUSE IN A FROM CLAUSE IS NOT THE
SAME AS THE NUMBER OF COLUMNS IN THE CORRESPONDING TABLE, VIEW, TABLE
EXPRESSION, OR TABLE FUNCTION
DROP OR COMMENT ON IDENTIFIES A(N) RATHER THAN A(N)
THE WITH CHECK OPTION CANNOT BE USED FOR THE SPECIFIED VIEW
THE INSERT OR UPDATE IS NOT ALLOWED BECAUSE A RESULTING ROW DOES NOT
SATISFY THE VIEW DEFINITION
TABLE SPACE . HAS BEEN PLACED IN CHECK PENDING
DOES NOT HAVE THE PRIVILEGE TO CREATE A VIEW WITH QUALIFICATION
THE NUMBER OF ARGUMENTS SPECIFIED FOR IS INVALID
THE DATA TYPE, LENGTH, OR VALUE OF ARGUMENT OF IS INVALID
UR IS SPECIFIED ON THE WITH CLAUSE BUT THE CURSOR IS NOT READ-ONLY
THE DATE, TIME, OR TIMESTAMP VALUE IS INVALID
THE STRING REPRESENTATION OF A DATETIME VALUE IS NOT A VALID DATETIME VALUE
AN ARITHMETIC EXPRESSION WITH A DATETIME VALUE IS INVALID
AN ARITHMETIC OPERATION ON A DATE OR TIMESTAMP HAS A RESULT THAT IS NOT
WITHIN THE VALID RANGE OF DATES
AN ARITHMETIC EXPRESSION WITH A DATETIME VALUE CONTAINS A PARAMETER
MARKER
THE LOCAL FORMAT OPTION HAS BEEN USED WITH A DATE OR TIME AND NO LOCAL EXIT
HAS BEEN INSTALLED
THE LOCAL DATE LENGTH OR LOCAL TIME LENGTH HAS BEEN INCREASED AND
EXECUTING PROGRAM RELIES ON THE OLD LENGTH
A REFERENCE TO A CURRENT DATE/TIME SPECIAL REGISTER IS INVALID BECAUSE THE
MVS TOD CLOCK IS BAD OR THE MVS PARMTZ IS OUT OF RANGE

-188
-189
-190
-191
-197
-198
-199
203
-203
204
-204
-205
206
-206
-208
-212
-214
218
219
-219
220
-220
-221
-229
236
237
238
239
-240
-250
-251
-300
-301
-302
-303
304
-304

THE STRING REPRESENTATION OF A NAME IS INVALID


CCSID IS UNKNOWN OR INVALID FOR THE DATA TYPE OR SUBTYPE
ATTRIBUTES OF COLUMN IN TABLE ARE NOT COMPATIBLE WITH THE EXISTING COLUMN
A STRING CANNOT BE USED BECAUSE IT IS INVALID MIXED DATA
QUALIFIED COLUMN NAMES IN ORDER BY CLAUSE NOT PERMITTED WHEN UNION OR
UNION ALL SPECIFIED
THE OPERAND OF THE PREPARE OR EXECUTE IMMEDIATE STATEMENT IS BLANK OR
EMPTY
ILLEGAL USE OF KEYWORD , TOKEN WAS EXPECTED
THE QUALIFIED COLUMN NAME WAS RESOLVED USING A NON-UNIQUE OR UNEXPOSED
NAME
A REFERENCE TO COLUMN IS AMBIGUOUS
IS AN UNDEFINED NAME
IS AN UNDEFINED NAME
IS NOT A COLUMN OF TABLE
IS NOT A COLUMN OF AN INSERTED TABLE, UPDATED TABLE, OR ANY TABLE IDENTIFIED
IN A FROM CLAUSE
IS NOT A COLUMN OF AN INSERTED TABLE, UPDATED TABLE, OR ANY TABLE IDENTIFIED
IN A FROM CLAUSE, OR IS NOT A COLUMN OF THE TRIGGERING TABLE OF A TRIGGER
THE ORDER BY CLAUSE IS INVALID BECAUSE COLUMN IS NOT PART OF THE RESULT
TABLE
IS SPECIFIED MORE THAN ONCE IN THE REFERENCING CLAUSE OF A TRIGGER
DEFINITION
AN EXPRESSION STARTING WITH IN THE CLAUSE IS NOT VALID. REASON CODE =
THE SQL STATEMENT REFERENCING A REMOTE OBJECT CANNOT BE EXPLAINED
THE REQUIRED EXPLANATION TABLE DOES NOT EXIST
THE REQUIRED EXPLANATION TABLE DOES NOT EXIST
THE COLUMN IN EXPLANATION TABLE IS NOT DEFINED PROPERLY
THE COLUMN IN EXPLANATION TABLE IS NOT DEFINED PROPERLY
"SET OF OPTIONAL COLUMNS" IN EXPLANATION TABLE IS INCOMPLETE. OPTIONAL
COLUMN IS MISSING
THE LOCALE SPECIFIED IN A SET LOCALE OR OTHER STATEMENT THAT IS LOCALE
SENSITIVE WAS NOT FOUND
SQLDA INCLUDES SQLVAR ENTRIES, BUT ARE REQUIRED FOR COLUMNS
SQLDA INCLUDES SQLVAR ENTRIES, BUT ARE REQUIRED BECAUSE AT LEAST ONE OF
THE COLUMNS BEING DESCRIBED IS A DISTINCT TYPE
SQLDA INCLUDES SQLVAR ENTRIES, BUT SQLVAR ENTRIES ARE NEEDED FOR
COLUMNS BECAUSE AT LEAST ONE OF THE COLUMNS BEING DESCRIBED IS A LOB
SQLDA INCLUDES SQLVAR ENTRIES, BUT ARE REQUIRED FOR COLUMNS BECAUSE AT
LEAST ONE OF THE COLUMNS BEING DESCRIBED IS A DISTINCT TYPE
THE PART CLAUSE OF A LOCK TABLE STATEMENT IS INVALID
THE LOCAL LOCATION NAME IS NOT DEFINED WHEN PROCESSING A THREE-PART
OBJECT NAME
TOKEN IS NOT VALID
THE STRING CONTAINED IN HOST VARIABLE OR PARAMETER IS NOT NUL-TERMINATED
THE VALUE OF INPUT HOST VARIABLE OR PARAMETER NUMBER CANNOT BE USED AS
SPECIFIED BECAUSE OF ITS DATA TYPE
THE VALUE OF INPUT VARIABLE OR PARAMETER NUMBER IS INVALID OR TOO LARGE
FOR THE TARGET COLUMN OR THE TARGET VALUE
A VALUE CANNOT BE ASSIGNED TO OUTPUT HOST VARIABLE NUMBER BECAUSE THE
DATA TYPES ARE NOT COMPARABLE
A VALUE WITH DATA TYPE CANNOT BE ASSIGNED TO A HOST VARIABLE BECAUSE THE
VALUE IS NOT WITHIN THE RANGE OF THE HOST VARIABLE IN POSITION WITH DATA
TYPE
A VALUE WITH DATA TYPE CANNOT BE ASSIGNED TO A HOST VARIABLE BECAUSE THE

-305
-309
-310
-311
-312
-313
-314
-327
-330
331
-331
-332
-333
-338
339
-339
-350
-351
-352
-355
-359
-372
-373
-390
-392
394
395
-396
-397
-398
-399
-400
-401
402
-402

VALUE IS NOT WITHIN THE RANGE OF THE HOST VARIABLE IN POSITION WITH DATA
TYPE
THE NULL VALUE CANNOT BE ASSIGNED TO OUTPUT HOST VARIABLE NUMBER
BECAUSE NO INDICATOR VARIABLE IS SPECIFIED
A PREDICATE IS INVALID BECAUSE A REFERENCED HOST VARIABLE HAS THE NULL
VALUE
DECIMAL HOST VARIABLE OR PARAMETER CONTAINS NON-DECIMAL DATA
THE LENGTH OF INPUT HOST VARIABLE NUMBER IS NEGATIVE OR GREATER THAN THE
MAXIMUM
IS AN UNDEFINED OR UNUSABLE HOST VARIABLE OR IS USED IN A DYNAMIC SQL
STATEMENT OR A TRIGGER DEFINITION
THE NUMBER OF HOST VARIABLES SPECIFIED IS NOT EQUAL TO THE NUMBER OF
PARAMETER MARKERS
THE STATEMENT CONTAINS AN AMBIGUOUS HOST VARIABLE REFERENCE
THE ROW CANNOT BE INSERTED BECAUSE IT IS OUTSIDE THE BOUND OF THE
PARTITION RANGE FOR THE LAST PARTITION
A STRING CANNOT BE USED BECAUSE IT CANNOT BE TRANSLATED. REASON ,
CHARACTER , HOST VARIABLE
THE NULL VALUE HAS BEEN ASSIGNED TO A HOST VARIABLE BECAUSE THE STRING
CANNOT BE TRANSLATED. REASON , CHARACTER , HOST VARIABLE
A STRING CANNOT BE ASSIGNED TO A HOST VARIABLE BECAUSE IT CANNOT BE
TRANSLATED. REASON , CHARACTER , POSITION
SYSSTRINGS DOES NOT DEFINE A TRANSLATION FROM CCSID TO
THE SUBTYPE OF A STRING VARIABLE IS NOT THE SAME AS THE SUBTYPE KNOWN AT
BIND TIME AND THE DIFFERENCE CANNOT BE RESOLVED BY TRANSLATION
AN ON CLAUSE IS INVALID
THE SQL STATEMENT HAS BEEN SUCCESSFULLY EXECUTED BUT THERE MAY BE SOME
CHARACTER CONVERSION INCONSISTENCIES
THE SQL STATEMENT CANNOT BE EXECUTED FROM AN ASCII BASED DRDA APPLICATION
REQUESTOR TO A V2R2 DB2 SUBSYSTEM
INVALID SPECIFICATION OF A LARGE OBJECT COLUMN
AN UNSUPPORTED SQLTYPE WAS ENCOUNTERED IN POSITION OF THE SELECT-LIST
AN UNSUPPORTED SQLTYPE WAS ENCOUNTERED IN POSITION OF THE INPUT-LIST
A LOB COLUMN IS TOO LARGE TO BE LOGGED
THE RANGE OF VALUES FOR THE IDENTITY COLUMN IS EXHAUSTED
ONLY ONE ROWID OR IDENTITY COLUMN IS ALLOWED IN A TABLE
DEFAULT CANNOT BE SPECIFIED FOR IDENTITY COLUMN
THE FUNCTION NAME , SPECIFIC NAME , IS NOT VALID IN THE CONTEXT IN WHICH IT
OCCURS
SQLDA PROVIDED FOR CURSOR HAS BEEN CHANGED FROM THE PREVIOUS FETCH
USER SPECIFIED OPTIMIZATION HINTS USED DURING ACCESS PATH SELECTION
USER SPECIFIED OPTIMIZATION HINTS ARE INVALID (REASON CODE = ''). THE
OPTIMIZATION HINTS ARE IGNORED
ATTEMPTED TO EXECUTE AN SQL STATEMENT DURING FINAL CALL PROCESSING
THE OPTION GENERATED IS SPECIFIED WITH A COLUMN THAT IS NOT A ROW ID OR
DISTINCT TYPE BASED ON A ROW ID
A LOCATOR WAS REQUESTED FOR HOST VARIABLE NUMBER BUT THE VARIABLE IS NOT
A LOB
ATTEMPTED TO INSERT AN INVALID VALUE INTO A ROWID COLUMN
THE CATALOG HAS THE MAXIMUM NUMBER OF USER DEFINED INDEXES
THE OPERANDS OF AN ARITHMETIC OR COMPARISON OPERATION ARE NOT
COMPARABLE
LOCATION IS UNKNOWN
AN ARITHMETIC FUNCTION OR OPERATOR IS APPLIED TO CHARACTER OR DATETIME
DATA

403
-404
-405
-406
-407
-408
-409
-410
-411
-412
-413
-414
-415
-416
-417
-418
-419
-420
-421
-423
-426
-427
-430
-433
434
-435
-438
-440
-441
-443
-444
445
-449
-450
-451
-453
-454

THE LOCAL OBJECT REFERENCED BY THE CREATE ALIAS STATEMENT DOES NOT EXIST
THE SQL STATEMENT SPECIFIES A STRING THAT IS TOO LONG
THE NUMERIC LITERAL CANNOT BE USED AS SPECIFIED BECAUSE IT IS OUT OF RANGE
A CALCULATED OR DERIVED NUMERIC VALUE IS NOT WITHIN THE RANGE OF ITS OBJECT
COLUMN
AN UPDATE, INSERT, OR SET VALUE IS NULL, BUT THE OBJECT COLUMN CANNOT
CONTAIN NULL VALUES
THE VALUE IS NOT COMPATIBLE WITH THE DATA TYPE OF ITS TARGET
INVALID OPERAND OF A COUNT FUNCTION
THE FLOATING POINT LITERAL CONTAINS MORE THAN 30 CHARACTERS
CURRENT SQLID CANNOT BE USED IN A STATEMENT THAT REFERENCES REMOTE
OBJECTS
THE SELECT CLAUSE OF A SUBQUERY SPECIFIES MULTIPLE COLUMNS
OVERFLOW OCCURRED DURING NUMERIC DATA TYPE CONVERSION
A LIKE PREDICATE IS INVALID BECAUSE THE FIRST OPERAND IS NOT A STRING
THE CORRESPONDING COLUMNS, , OF THE OPERANDS OF A UNION OR A UNION ALL DO
NOT HAVE COMPARABLE COLUMN DESCRIPTIONS
AN OPERAND OF A UNION CONTAINS A LONG STRING COLUMN
A STATEMENT STRING TO BE PREPARED INCLUDES PARAMETER MARKERS AS THE
OPERANDS OF THE SAME OPERATOR
A STATEMENT STRING TO BE PREPARED CONTAINS AN INVALID USE OF PARAMETER
MARKERS
A DECIMAL DIVIDE OPERATION IS INVALID BECAUSE THE RESULT WOULD HAVE A
NEGATIVE SCALE
THE VALUE OF A CHARACTER STRING ARGUMENT WAS NOT ACCEPTABLE TO THE
FUNCTION
THE OPERANDS OF A UNION OR UNION ALL DO NOT HAVE THE SAME NUMBER OF
COLUMNS
INVALID VALUE FOR LOCATOR IN POSITION
DYNAMIC COMMIT NOT VALID AT AN APPLICATION SERVER WHERE UPDATES ARE NOT
ALLOWED
DYNAMIC ROLLBACK NOT VALID AT AN APPLICATION SERVER WHERE UPDATES ARE NOT
ALLOWED
(SPECIFIC NAME ) HAS ABNORMALLY TERMINATED
VALUE IS TOO LONG
OPTION IS A DEPRECATED FEATURE
AN INVALID SQLSTATE IS SPECIFIED IN THE FUNCTION RAISE_ERROR OR IN A SIGNAL
SQLSTATE STATEMENT
APPLICATION RAISED ERROR WITH DIAGNOSTIC TEXT:
NO BY THE NAME HAVING COMPATIBLE ARGUMENTS WAS FOUND IN THE CURRENT
PATH
INVALID USE OF 'DISTINCT' OR 'ALL' WITH SCALAR FUNCTION
EXTERNAL FUNCTION (SPECIFIC NAME ) HAS RETURNED AN ERROR SQLSTATE WITH
DIAGNOSTIC TEXT
USER PROGRAM COULD NOT BE FOUND
VALUE HAS BEEN TRUNCATED
CREATE OR ALTER STATEMENT FOR FUNCTION OR PROCEDURE CONTAINS AN INVALID
FORMAT OF THE EXTERNAL NAME CLAUSE OR IS MISSING THE EXTERNAL NAME CLAUSE
USER-DEFINED FUNCTION OR STORED PROCEDURE , PARAMETER NUMBER ,
OVERLAYED STORAGE BEYOND ITS DECLARED LENGTH
THE DEFINITION, IN THE CREATE FUNCTION FOR CONTAINS DATA TYPE WHICH IS NOT
APPROPRIATE FOR AN EXTERNAL FUNCTION WRITTEN IN THE GIVEN LANGUAGE
THERE IS A PROBLEM WITH THE RETURNS CLAUSE IN THE CREATE FUNCTION
STATEMENT FOR
THE SIGNATURE PROVIDED IN THE CREATE FUNCTION STATEMENT FOR MATCHES THE

-455
-456
-457
-458
-461
462
-463
464
466
-469
-470
-471
-472
-473
-475
-476
-478
-480
-482
-483
-487
-490
-491
-492
494
495
-495
-496
-497
-499
-500
-501
-502
-503

SIGNATURE OF SOME OTHER FUNCTION ALREADY EXISTING IN THE SCHEMA


IN CREATE FUNCTION FOR , THE SCHEMA NAME PROVIDED FOR THE SPECIFIC NAME
DOES NOT MATCH THE SCHEMA NAME OF THE FUNCTION
IN CREATE FUNCTION FOR , THE SPECIFIC NAME ALREADY EXISTS IN THE SCHEMA
A FUNCTION OR DISTINCT TYPE CANNOT BE CALLED SINCE IT IS RESERVED FOR
SYSTEM USE
IN A REFERENCE TO FUNCTION BY SIGNATURE, A MATCHING FUNCTION COULD NOT BE
FOUND
A VALUE WITH DATA TYPE CANNOT BE CAST TO TYPE
EXTERNAL FUNCTION OR PROCEDURE (SPECIFIC NAME ) HAS RETURNED A WARNING
SQLSTATE, WITH DIAGNOSTIC TEXT
EXTERNAL FUNCTION (SPECIFIC NAME ) HAS RETURNED AN INVALID SQLSTATE , WITH
DIAGNOSTIC TEXT
PROCEDURE RETURNED QUERY RESULT SETS, WHICH EXCEEDS THE DEFINED LIMIT
PROCEDURE RETURNED QUERY RESULT SETS
SQL CALL STATEMENT MUST SPECIFY AN OUTPUT HOST VARIABLE FOR PARAMETER
SQL CALL STATEMENT SPECIFIED A NULL VALUE FOR INPUT PARAMETER , BUT THE
STORED PROCEDURE DOES NOT SUPPORT NULL VALUES
INVOCATION OF FUNCTION OR PROCEDURE FAILED DUE TO REASON
CURSOR WAS LEFT OPEN BY EXTERNAL FUNCTION (SPECIFIC NAME )
A USER DEFINED DATA TYPE CANNOT BE CALLED THE SAME NAME AS A SYSTEM
PREDEFINED TYPE (BUILT-IN TYPE)
THE RESULT TYPE OF THE SOURCE FUNCTION CANNOT BE CAST TO THE RETURNS
TYPE OF THE USER-DEFINED FUNCTION
REFERENCE TO FUNCTION WAS NAMED WITHOUT A SIGNATURE, BUT THE FUNCTION IS
NOT UNIQUE WITHIN ITS SCHEMA
DROP OR REVOKE ON OBJECT TYPE CANNOT BE PROCESSED BECAUSE OBJECT OF
TYPE IS DEPENDENT ON IT
THE PROCEDURE HAS NOT YET BEEN CALLED
THE PROCEDURE RETURNED NO LOCATORS
IN CREATE FUNCTION FOR STATEMENT, THE NUMBER OF PARAMETERS DOES NOT
MATCH THE NUMBER OF PARAMETERS OF THE SOURCE FUNCTION
ATTEMPTED TO EXECUTE AN SQL STATEMENT WHEN THE DEFINITION OF THE
FUNCTION OR PROCEDURE DID NOT SPECIFY THIS ACTION
NUMBER DIRECTLY SPECIFIED IN AN SQL STATEMENT IS OUTSIDE THE RANGE OF
ALLOWABLE VALUES IN THIS CONTEXT (, )
CREATE STATEMENT FOR USER-DEFINED FUNCTION MUST HAVE A RETURNS CLAUSE,
AND EITHER THE EXTERNAL CLAUSE (WITH OTHER REQUIRED KEYWORDS) OR THE
SOURCE CLAUSE
THE CREATE FUNCTION FOR HAS A PROBLEM WITH PARAMETER NUMBER . IT MAY
INVOLVE A MISMATCH WITH A SOURCE FUNCTION
NUMBER OF RESULT SETS IS GREATER THAN NUMBER OF LOCATORS
ESTIMATED PROCESSOR COST OF PROCESSOR SECONDS ( SERVICE UNITS) IN COST
CATEGORY EXCEEDS A RESOURCE LIMIT WARNING THRESHOLD OF SERVICE UNITS
ESTIMATED PROCESSOR COST OF PROCESSOR SECONDS ( SERVICE UNITS) IN COST
CATEGORY EXCEEDS A RESOURCE LIMIT ERROR THRESHOLD OF SERVICE UNITS
THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE IT REFERENCES A RESULT SET
THAT WAS NOT CREATED BY THE CURRENT SERVER
THE MAXIMUM LIMIT OF INTERNAL IDENTIFIERS HAS BEEN EXCEEDED FOR DATABASE
CURSOR HAS ALREADY BEEN ASSIGNED TO THIS OR ANOTHER RESULT SET FROM
PROCEDURE
THE IDENTIFIED CURSOR WAS CLOSED WHEN THE CONNECTION WAS DESTROYED
THE CURSOR IDENTIFIED IN A FETCH OR CLOSE STATEMENT IS NOT OPEN
THE CURSOR IDENTIFIED IN AN OPEN STATEMENT IS ALREADY OPEN
A COLUMN CANNOT BE UPDATED BECAUSE IT IS NOT IDENTIFIED IN THE UPDATE

-504
-507
-508
-509
-510
-511
-512
-513
-514
-516
-517
-518
-519
-525
-526
-530
-531
-532
-533
-534
535
-536
-537
-538
-539
-540
541
-542
-543
-544
-545
-546
-548
-549
551
-551

CLAUSE OF THE SELECT STATEMENT OF THE CURSOR


THE CURSOR NAME IS NOT DEFINED
THE CURSOR IDENTIFIED IN THE UPDATE OR DELETE STATEMENT IS NOT OPEN
THE CURSOR IDENTIFIED IN THE UPDATE OR DELETE STATEMENT IS NOT POSITIONED
ON A ROW
THE TABLE IDENTIFIED IN THE UPDATE OR DELETE STATEMENT IS NOT THE SAME TABLE
DESIGNATED BY THE CURSOR
THE TABLE DESIGNATED BY THE CURSOR OF THE UPDATE OR DELETE STATEMENT
CANNOT BE MODIFIED
THE FOR UPDATE CLAUSE CANNOT BE SPECIFIED BECAUSE THE TABLE DESIGNATED BY
THE CURSOR CANNOT BE MODIFIED
STATEMENT REFERENCE TO REMOTE OBJECT IS INVALID
THE ALIAS MUST NOT BE DEFINED ON ANOTHER LOCAL OR REMOTE ALIAS
THE CURSOR IS NOT IN A PREPARED STATE
THE DESCRIBE FOR STATIC STATEMENT DOES NOT IDENTIFY A PREPARED STATEMENT
CURSOR CANNOT BE USED BECAUSE ITS STATEMENT NAME DOES NOT IDENTIFY A
PREPARED SELECT STATEMENT
THE EXECUTE STATEMENT DOES NOT IDENTIFY A VALID PREPARED STATEMENT
THE PREPARE STATEMENT IDENTIFIES THE SELECT STATEMENT OF THE OPENED
CURSOR
THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE IT WAS IN ERROR AT BIND TIME
FOR SECTION = PACKAGE = CONSISTENCY TOKEN = X''
THE REQUESTED OPERATION OR USAGE DOES NOT APPLY TO TEMPORARY TABLE
THE INSERT OR UPDATE VALUE OF FOREIGN KEY IS INVALID
PARENT KEY IN A PARENT ROW CANNOT BE UPDATED BECAUSE IT HAS ONE OR MORE
DEPENDENT ROWS IN RELATIONSHIP
THE RELATIONSHIP RESTRICTS THE DELETION OF ROW WITH RID X''
INVALID MULTIPLE-ROW INSERT
THE PRIMARY KEY CANNOT BE UPDATED BECAUSE OF MULTIPLE-ROW UPDATE
THE RESULT OF THE POSITIONED UPDATE OR DELETE MAY DEPEND ON THE ORDER OF
THE ROWS
THE DELETE STATEMENT IS INVALID BECAUSE TABLE CAN BE AFFECTED BY THE
OPERATION
THE PRIMARY KEY CLAUSE, A FOREIGN KEY CLAUSE, OR A UNIQUE CLAUSE IDENTIFIES
COLUMN MORE THAN ONCE
FOREIGN KEY DOES NOT CONFORM TO THE DESCRIPTION OF A PARENT KEY OF TABLE
TABLE DOES NOT HAVE A PRIMARY KEY
THE DEFINITION OF TABLE IS INCOMPLETE BECAUSE IT LACKS A PRIMARY INDEX OR A
REQUIRED UNIQUE INDEX
THE REFERENTIAL OR UNIQUE CONSTRAINT HAS BEEN IGNORED BECAUSE IT IS A
DUPLICATE
CANNOT BE A COLUMN OF A PRIMARY KEY, A UNIQUE CONSTRAINT, OR A PARENT KEY
BECAUSE IT CAN CONTAIN NULL VALUES
A ROW IN A PARENT TABLE CANNOT BE DELETED BECAUSE THE CHECK CONSTRAINT
RESTRICTS THE DELETION
THE CHECK CONSTRAINT SPECIFIED IN THE ALTER TABLE STATEMENT CANNOT BE
ADDED BECAUSE AN EXISTING ROW VIOLATES THE CHECK CONSTRAINT
THE REQUESTED OPERATION IS NOT ALLOWED BECAUSE A ROW DOES NOT SATISFY
THE CHECK CONSTRAINT
THE CHECK CONSTRAINT IS INVALID
A CHECK CONSTRAINT THAT IS DEFINED WITH IS INVALID
THE STATEMENT IS NOT ALLOWED FOR BECAUSE THE BIND OPTION
DYNAMICRULES(RUN) IS NOT IN EFFECT FOR
DOES NOT HAVE THE PRIVILEGE TO PERFORM OPERATION ON OBJECT
DOES NOT HAVE THE PRIVILEGE TO PERFORM OPERATION ON OBJECT

552
-552
-553
-554
-555
-556
-557
558
-558
-559
561
562
-567
-571
-573
-574
-577
-579
-580
-581
-582
585
-585
-586
-590
-592
-593
-594
599
-601
-602
-603
-604
-607
610
-611
-612
-613
-614

DOES NOT HAVE THE PRIVILEGE TO PERFORM OPERATION


DOES NOT HAVE THE PRIVILEGE TO PERFORM OPERATION
SPECIFIED IS NOT ONE OF THE VALID AUTHORIZATION IDS
AN AUTHORIZATION ID CANNOT GRANT A PRIVILEGE TO ITSELF
AN AUTHORIZATION ID CANNOT REVOKE A PRIVILEGE FROM ITSELF
CANNOT HAVE THE PRIVILEGE REVOKED BY BECAUSE THE REVOKEE DOES NOT
POSSESS THE PRIVILEGE OR THE REVOKER DID NOT MAKE THE GRANT
INCONSISTENT GRANT/REVOKE KEYWORD . PERMITTED KEYWORDS ARE
THE WITH GRANT OPTION IS IGNORED
INVALID CLAUSE OR COMBINATION OF CLAUSES ON A GRANT OR REVOKE
ALL AUTHORIZATION FUNCTIONS HAVE BEEN DISABLED
THE ALTER, INDEX, REFERENCES, AND TRIGGER PRIVILEGES CANNOT BE GRANTED TO
PUBLIC AT ALL LOCATIONS
A GRANT OF A PRIVILEGE WAS IGNORED BECAUSE THE GRANTEE ALREADY HAS THE
PRIVILEGE FROM THE GRANTOR
AUTHORIZATION ERROR USING AUTHORITY PACKAGE = PRIVILEGE =
THE STATEMENT WOULD RESULT IN A MULTIPLE SITE UPDATE
TABLE DOES NOT HAVE A UNIQUE KEY WITH THE SPECIFIED COLUMN NAMES
THE SPECIFIED DEFAULT VALUE OR IDENTITY ATTRIBUTE VALUE CONFLICTS WITH THE
DEFINITION OF COLUMN
ATTEMPTED TO MODIFY DATA WHEN THE DEFINITION OF THE FUNCTION OR
PROCEDURE DID NOT SPECIFY THIS ACTION
ATTEMPTED TO READ DATA WHEN THE DEFINITION OF THE FUNCTION OR PROCEDURE
DID NOT SPECIFY THIS ACTION
THE RESULT-EXPRESSIONS OF A CASE EXPRESSION CANNOT ALL BE NULL
THE DATA TYPES OF THE RESULT-EXPRESSIONS OF A CASE EXPRESSION ARE NOT
COMPATIBLE
THE SEARCH-CONDITION IN A SEARCHED-WHEN-CLAUSE CANNOT BE A QUANTIFIED
PREDICATE, IN PREDICATE, OR AN EXISTS PREDICATE
THE SCHEMA NAME APPEARS MORE THAN ONCE IN THE CURRENT PATH
THE SCHEMA NAME CANNOT APPEAR MORE THAN ONCE IN THE CURRENT PATH
THE TOTAL LENGTH OF THE CURRENT PATH SPECIAL REGISTER CANNOT EXCEED 254
CHARACTERS
PARAMETER NAME IS NOT UNIQUE IN THE CREATE FOR ROUTINE
NOT AUTHORIZED TO CREATE FUNCTIONS OR PROCEDURES IN WLM ENVIRONMENT
NOT NULL MUST BE SPECIFIED FOR ROWID OR DISTINCT TYPE COLUMN
ATTEMPT TO CREATE A NULLABLE ROWID OR DISTINCT TYPE COLUMN
COMPARISON FUNCTIONS ARE NOT CREATED FOR A DISTINCT TYPE BASED ON A LONG
STRING DATA TYPE
THE NAME OF THE OBJECT TO BE CREATED OR THE TARGET OF A RENAME STATEMENT
IS IDENTICAL TO THE EXISTING NAME OF THE OBJECT TYPE
TOO MANY COLUMNS SPECIFIED IN A CREATE INDEX
A UNIQUE INDEX CANNOT BE CREATED BECAUSE THE TABLE CONTAINS ROWS WHICH
ARE DUPLICATES WITH RESPECT TO THE VALUES OF THE IDENTIFIED COLUMNS
A DATA TYPE DEFINITION SPECIFIES AN INVALID LENGTH, PRECISION, OR SCALE
ATTRIBUTE
OPERATION OR OPTION IS NOT DEFINED FOR THIS OBJECT
A CREATE/ALTER ON OBJECT HAS PLACED OBJECT IN PENDING
ONLY LOCKMAX 0 CAN BE SPECIFIED WHEN THE LOCK SIZE OF THE TABLESPACE IS
TABLESPACE OR TABLE
IS A DUPLICATE COLUMN NAME
THE PRIMARY KEY OR A UNIQUE CONSTRAINT IS TOO LONG OR HAS TOO MANY
COLUMNS
THE INDEX CANNOT BE CREATED OR THE LENGTH OF THE COLUMN CANNOT BE
CHANGED BECAUSE THE SUM OF THE INTERNAL LENGTHS OF THE IDENTIFIED COLUMNS

-615
-616
-617
-618
-619
-620
-621
-622
-623
-624
625
-625
626
-626
-627
-628
-629
-630
-631
-632
-633
-634
-635
-636
-637
-638
-639
-640
-642
-643
-644
645
-646
-647
650
-650
-651
-652
653
-653
655
-655

IS GREATER THAN THE ALLOWABLE MAXIMUM


IS NOT ALLOWED ON A PACKAGE IN USE
CANNOT BE DROPPED BECAUSE IT IS REFERENCED BY
A TYPE 1 INDEX IS NOT VALID FOR TABLE
OPERATION IS NOT ALLOWED ON SYSTEM DATABASES
OPERATION DISALLOWED BECAUSE THE WORK FILE DATABASE IS NOT STOPPED
KEYWORD IN STATEMENT IS NOT PERMITTED FOR A SPACE IN THE DATABASE
DUPLICATE DBID WAS DETECTED AND PREVIOUSLY ASSIGNED TO
FOR MIXED DATA IS INVALID BECAUSE THE MIXED DATA INSTALL OPTION IS NO
A CLUSTERING INDEX ALREADY EXISTS ON TABLE
TABLE ALREADY HAS A PRIMARY KEY
THE DEFINITION OF TABLE HAS BEEN CHANGED TO INCOMPLETE
TABLE DOES NOT HAVE AN INDEX TO ENFORCE THE UNIQUENESS OF THE PARENT KEY
DROPPING THE INDEX TERMINATES ENFORCEMENT OF THE UNIQUENESS OF A KEY
THAT WAS DEFINED WHEN THE TABLE WAS CREATED
THE ALTER STATEMENT IS NOT EXECUTABLE BECAUSE THE PAGE SET IS NOT STOPPED
THE ALTER STATEMENT IS INVALID BECAUSE THE PAGESET HAS USER-MANAGED DATA
SETS
THE CLAUSES ARE MUTUALLY EXCLUSIVE
SET NULL CANNOT BE SPECIFIED BECAUSE FOREIGN KEY CANNOT CONTAIN NULL
VALUES
THE WHERE NOT NULL SPECIFICATION IS INVALID FOR TYPE 1 INDEXES
FOREIGN KEY IS TOO LONG OR HAS TOO MANY COLUMNS
THE TABLE CANNOT BE DEFINED AS A DEPENDENT OF BECAUSE OF DELETE RULE
RESTRICTIONS
THE DELETE RULE MUST BE
THE DELETE RULE MUST NOT BE CASCADE
THE DELETE RULES CANNOT BE DIFFERENT OR CANNOT BE SET NULL
THE PARTITIONING KEYS FOR PARTITION ARE NOT SPECIFIED IN ASCENDING OR
DESCENDING ORDER
DUPLICATE KEYWORD
TABLE CANNOT BE CREATED BECAUSE COLUMN DEFINITION IS MISSING
A NULLABLE COLUMN OF A FOREIGN KEY WITH A DELETE RULE OF SET NULL CANNOT
BE A COLUMN OF THE KEY OF A PARTITIONED INDEX
LOCKSIZE ROW CANNOT BE SPECIFIED BECAUSE TABLE IN THIS TABLESPACE HAS
TYPE 1 INDEX
TOO MANY COLUMNS IN UNIQUE CONSTRAINTS
CHECK CONSTRAINT EXCEEDS MAXIMUM ALLOWABLE LENGTH
INVALID VALUE SPECIFIED FOR KEYWORD IN STATEMENT
WHERE NOT NULL IS IGNORED BECAUSE THE INDEX KEY CANNOT CONTAIN NULL
VALUES
TABLE CANNOT BE CREATED IN SPECIFIED TABLE SPACE BECAUSE IT ALREADY
CONTAINS A TABLE
BUFFERPOOL CANNOT BE SPECIFIED BECAUSE IT HAS NOT BEEN ACTIVATED
THE TABLE BEING CREATED OR ALTERED CAN NOT BECOME A DEPENDENT TABLE
THE ALTER INDEX CANNOT BE EXECUTED, REASON
TABLE DESCRIPTION EXCEEDS MAXIMUM SIZE OF OBJECT DESCRIPTOR
VIOLATION OF INSTALLATION DEFINED EDIT OR VALIDATION PROCEDURE
TABLE IN PARTITIONED TABLE SPACE IS NOT AVAILABLE BECAUSE ITS PARTITIONED
INDEX HAS NOT BEEN CREATED
TABLE IN PARTITIONED TABLE SPACE IS NOT AVAILABLE BECAUSE ITS PARTITIONED
INDEX HAS NOT BEEN CREATED
STOGROUP HAS BOTH SPECIFIC AND NON-SPECIFIC VOLUME IDS. IT WILL NOT BE
ALLOWED IN FUTURE RELEASES.
THE CREATE OR ALTER STOGROUP IS INVALID BECAUSE THE STORAGE GROUP WOULD

658
-658
-660
-661
-662
-663
664
-665
-666
-667
-668
-669
-670
-671
-672
-676
-677
-678
-679
-680
-681
-682
-683
-684
-685
-686
-687
-688
-689
-690
-691
-692
-693
-694
-696
-697
-713
-715

HAVE BOTH SPECIFIC AND NON-SPECIFIC VOLUME IDS


THE SUBPAGES VALUE IS IGNORED FOR THE CATALOG INDEX
A CANNOT BE DROPPED USING THE STATEMENT
INDEX CANNOT BE CREATED ON PARTITIONED TABLE SPACE BECAUSE KEY LIMITS ARE
NOT SPECIFIED
INDEX CANNOT BE CREATED ON PARTITIONED TABLE SPACE BECAUSE THE NUMBER
OF PART SPECIFICATIONS IS NOT EQUAL TO THE NUMBER OF PARTITIONS OF THE
TABLE SPACE
A PARTITIONED INDEX CANNOT BE CREATED ON A NON-PARTITIONED TABLE SPACE
THE NUMBER OF KEY LIMIT VALUES IS EITHER ZERO, OR GREATER THAN THE NUMBER
OF COLUMNS IN THE KEY OF INDEX
THE INTERNAL LENGTH OF THE LIMIT-KEY FIELDS FOR THE PARTITIONED INDEX
EXCEEDS THE LENGTH IMPOSED BY THE INDEX MANAGER
THE PART CLAUSE OF AN ALTER STATEMENT IS OMITTED OR INVALID
CANNOT BE EXECUTED BECAUSE IS IN PROGRESS
THE CLUSTERING INDEX FOR A PARTITIONED TABLE SPACE CANNOT BE EXPLICITLY
DROPPED
THE COLUMN CANNOT BE ADDED TO THE TABLE BECAUSE THE TABLE HAS AN EDIT
PROCEDURE
A TABLE IN A PARTITIONED TABLE SPACE CANNOT BE EXPLICITLY DROPPED
THE RECORD LENGTH OF THE TABLE EXCEEDS THE PAGE SIZE LIMIT
THE BUFFERPOOL ATTRIBUTE OF THE TABLE SPACE CANNOT BE ALTERED AS
SPECIFIED BECAUSE IT WOULD CHANGE THE PAGE SIZE OF THE TABLE SPACE
OPERATION DROP NOT ALLOWED ON TABLE
ONLY A 4K PAGE BUFFERPOOL CAN BE USED FOR AN INDEX
INSUFFICIENT VIRTUAL STORAGE FOR BUFFERPOOL EXPANSION
THE LITERAL SPECIFIED FOR THE INDEX LIMIT KEY MUST CONFORM TO THE DATA TYPE
OF THE CORRESPONDING COLUMN
THE OBJECT CANNOT BE CREATED BECAUSE A DROP IS PENDING ON THE OBJECT
TOO MANY COLUMNS SPECIFIED FOR A TABLE, VIEW, OR TABLE FUNCTION
COLUMN IN VIOLATION OF INSTALLATION DEFINED FIELD PROCEDURE RT: , RS: , MSG:
FIELD PROCEDURE COULD NOT BE LOADED
THE SPECIFICATION FOR COLUMN, DISTINCT TYPE, FUNCTION, OR PROCEDURE
CONTAINS INCOMPATIBLE CLAUSES
THE LENGTH OF LITERAL LIST BEGINNING IS TOO LONG
INVALID FIELD TYPE,
COLUMN DEFINED WITH A FIELD PROCEDURE CAN NOT COMPARE WITH ANOTHER
COLUMN WITH DIFFERENT FIELD PROCEDURE
FIELD TYPES INCOMPARABLE
INCORRECT DATA RETURNED FROM FIELD PROCEDURE, ,
TOO MANY COLUMNS DEFINED FOR A DEPENDENT TABLE
THE STATEMENT IS REJECTED BY DATA DEFINITION CONTROL SUPPORT. REASON
THE REQUIRED REGISTRATION TABLE DOES NOT EXIST
THE REQUIRED UNIQUE INDEX FOR DDL REGISTRATION TABLE DOES NOT EXIST
THE COLUMN IN DDL REGISTRATION TABLE OR INDEX IS NOT DEFINED PROPERLY
THE DDL STATEMENT CANNOT BE EXECUTED BECAUSE A DROP IS PENDING ON THE DDL
REGISTRATION TABLE
THE DEFINITION OF TRIGGER INCLUDES AN INVALID USE OF CORRELATION NAME OR
TRANSITION TABLE NAME . REASON CODE=
OLD OR NEW CORRELATION NAMES ARE NOT ALLOWED IN A TRIGGER DEFINED WITH
THE FOR EACH STATEMENT CLAUSE. OLD_TABLE OR NEW_TABLE NAMES ARE NOT
ALLOWED IN A TRIGGER WITH THE BEFORE CLAUSE
THE REPLACEMENT VALUE FOR IS INVALID
PROGRAM WITH MARK FAILED BECAUSE IT DEPENDS ON FUNCTIONS OF THE RELEASE
FROM WHICH FALLBACK HAS OCCURRED

-716
-717
-718
-719
-720
-721
-722
-723
-724
-725
-726
-728
-729
-730
-731
-732
-733
-734
-735
-736
-737
738
-739
-740
-741
-742
-746
-747
-748
-750
-751
-752
-763
-764
-765
-766

PROGRAM PRECOMPILED WITH INCORRECT LEVEL FOR THIS RELEASE


FOR WITH MARK FAILED BECAUSE DEPENDS ON FUNCTIONS OF THE RELEASE FROM
WHICH FALLBACK HAS OCCURRED
REBIND OF PACKAGE FAILED BECAUSE IBMREQD OF IS INVALID
BIND ADD ERROR USING AUTHORITY PACKAGE ALREADY EXISTS
BIND ERROR, ATTEMPTING TO REPLACE PACKAGE = WITH VERSION = BUT THIS
VERSION ALREADY EXISTS
BIND ERROR FOR PACKAGE = CONTOKEN = ''X IS NOT UNIQUE SO IT CANNOT BE
CREATED
ERROR USING AUTHORITY PACKAGE DOES NOT EXIST
AN ERROR OCCURRED IN A TRIGGERED SQL STATEMENT IN TRIGGER , SECTION
NUMBER . INFORMATION RETURNED: SQLCODE , SQLSTATE , AND MESSAGE TOKENS
THE ACTIVATION OF THE OBJECT WOULD EXCEED THE MAXIMUM LEVEL OF INDIRECT
SQL CASCADING
THE SPECIAL REGISTER AT LOCATION WAS SUPPLIED AN INVALID VALUE
BIND ERROR ATTEMPTING TO REPLACE PACKAGE = . THERE ARE ENABLE OR DISABLE
ENTRIES CURRENTLY ASSOCIATED WITH THE PACKAGE
DATA TYPE IS NOT ALLOWED IN DB2 PRIVATE PROTOCOL PROCESSING
A STORED PROCEDURE SPECIFYING COMMIT ON RETURN CANNOT BE THE TARGET OF A
NESTED CALL STATEMENT
THE PARENT OF A TABLE IN A READ-ONLY SHARED DATABASE MUST ALSO BE A TABLE
IN A READ-ONLY SHARED DATABASE
USER-DEFINED DATASET MUST BE DEFINED WITH SHAREOPTIONS (1,3)
THE DATABASE IS DEFINED ON THIS SUBSYSTEM WITH THE ROSHARE READ ATTRIBUTE
BUT THE TABLE SPACE OR INDEX SPACE HAS NOT BEEN DEFINED ON THE OWNING
SUBSYSTEM
THE DESCRIPTION OF A TABLE SPACE, INDEX SPACE, OR TABLE IN A ROSHARE READ
DATABASE MUST BE CONSISTENT WITH ITS DESCRIPTION IN THE OWNER SYSTEM
THE ROSHARE ATTRIBUTE OF A DATABASE CANNOT BE ALTERED FROM ROSHARE READ
DATABASE CANNOT BE ACCESSED BECAUSE IT IS NO LONGER A SHARED DATABASE
INVALID OBID SPECIFIED
IMPLICIT TABLE SPACE NOT ALLOWED
DEFINITION CHANGE OF MAY REQUIRE SIMILAR CHANGE ON READ-ONLY SYSTEMS
ALTER FUNCTION FAILED BECAUSE FUNCTIONS CANNOT MODIFY DATA WHEN THEY
ARE PROCESSED IN PARALLEL
FUNCTION IS DEFINED WITH THE OPTION MODIFIES SQL DATA WHICH IS NOT VALID IN
THE CONTEXT IN WHICH IT WAS INVOKED
A DATABASE IS ALREADY DEFINED FOR MEMBER
DSNDB07 IS THE IMPLICIT WORK FILE DATABASE
THE SQL STATEMENT IN AN EXTERNAL FUNCTION, TRIGGER, OR IN STORED
PROCEDURE VIOLATES THE NESTING SQL RESTRICTION
TABLE IS NOT AVAILABLE UNTIL THE AUXILIARY TABLES AND INDEXES FOR ITS
EXTERNALLY STORED COLUMNS HAVE BEEN CREATED
AN INDEX ALREADY EXISTS ON AUXILIARY TABLE
THE SOURCE TABLE CANNOT BE RENAMED BECAUSE IT IS REFERENCED IN EXISTING
VIEW DEFINITIONS OR TRIGGER DEFINITIONS
(SPECIFIC NAME ) ATTEMPTED TO EXECUTE AN SQL STATEMENT THAT IS NOT
ALLOWED
THE CONNECT STATEMENT IS INVALID BECAUSE THE PROCESS IS NOT IN THE
CONNECTABLE STATE
INVALID TABLE SPACE NAME
A LOB TABLE SPACE AND ITS ASSOCIATED BASE TABLE SPACE MUST BE IN THE SAME
DATABASE
TABLE IS NOT COMPATIBLE WITH DATABASE
THE OBJECT OF A STATEMENT IS AN AUXILIARY TABLE FOR WHICH THE REQUESTED

-767
-768
-769
-770
-771
-797
-798
799
802
-802
-803
-804
-805
806
807
-807
-808
-811
-812
-815
-817
-818
-819
-820
-822
-840
-842
-843
-846
863
-867
-870
-872
-873
-874

OPERATION IS NOT PERMITTED


MISSING OR INVALID COLUMN SPECIFICATION FOR INDEX
AN AUXILIARY TABLE ALREADY EXISTS FOR THE SPECIFIED COLUMN OR PARTITION
SPECIFICATION OF CREATE AUX TABLE DOES NOT MATCH THE CHARACTERISTICS OF
THE BASE TABLE
TABLE CANNOT HAVE A LOB COLUMN UNLESS IT ALSO HAS A ROWID COLUMN
INVALID SPECIFICATION OF A ROWID COLUMN
ATTEMPT TO CREATE TRIGGER WITH AN UNSUPPORTED TRIGGERED SQL STATEMENT
YOU CANNOT INSERT A VALUE INTO A COLUMN THAT IS DEFINED WITH THE OPTION
GENERATED ALWAYS. COLUMN NAME
A SET STATEMENT REFERENCES A SPECIAL REGISTER THAT DOES NOT EXIST AT THE
SERVER SITE
EXCEPTION ERROR HAS OCCURRED DURING OPERATION ON DATA, POSITION
EXCEPTION ERROR HAS OCCURRED DURING OPERATION ON DATA, POSITION
AN INSERTED OR UPDATED VALUE IS INVALID BECAUSE INDEX IN INDEX SPACE
CONSTRAINS COLUMNS OF THE TABLE SO NO TWO ROWS CAN CONTAIN DUPLICATE
VALUES IN THOSE COLUMNS. RID OF EXISTING ROW IS X''
AN ERROR WAS FOUND IN THE APPLICATION PROGRAM INPUT PARAMETERS FOR THE
SQL STATEMENT, REASON
DBRM OR PACKAGE NAME NOT FOUND IN PLAN . REASON
BIND ISOLATION LEVEL RR CONFLICTS WITH TABLESPACE LOCKSIZE PAGE OR
LOCKSIZE ROW AND LOCKMAX 0
THE RESULT OF DECIMAL MULTIPLICATION MAY CAUSE OVERFLOW
ACCESS DENIED: PACKAGE IS NOT ENABLED FOR ACCESS FROM
THE CONNECT STATEMENT IS NOT CONSISTENT WITH THE FIRST CONNECT STATEMENT
THE RESULT OF AN EMBEDDED SELECT STATEMENT OR A SUBSELECT IN THE SET
CLAUSE OF AN UPDATE STATEMENT IS A TABLE OF MORE THAN ONE ROW, OR THE
RESULT OF A SUBQUERY OF A BASIC PREDICATE IS MORE THAN VALUE
THE SQL STATEMENT CANNOT BE PROCESSED BECAUSE A BLANK COLLECTION-ID WAS
FOUND IN THE CURRENT PACKAGESET SPECIAL REGISTER WHILE TRYING TO FORM A
QUALIFIED PACKAGE NAME FOR PROGRAM USING PLAN
A GROUP BY OR HAVING CLAUSE IS IMPLICITLY OR EXPLICITLY SPECIFIED IN A
SUBSELECT OF A BASIC PREDICATE OR A SET CLAUSE OF AN UPDATE STATEMENT
THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE THE STATEMENT WILL RESULT
IN A PROHIBITED UPDATE OPERATION
THE PRECOMPILER-GENERATED TIMESTAMP IN THE LOAD MODULE IS DIFFERENT FROM
THE BIND TIMESTAMP BUILT FROM THE DBRM
THE VIEW CANNOT BE PROCESSED BECAUSE THE LENGTH OF ITS PARSE TREE IN THE
CATALOG IS ZERO
THE SQL STATEMENT CANNOT BE PROCESSED BECAUSE CONTAINS A VALUE THAT IS
NOT VALID IN THIS RELEASE
THE SQLDA CONTAINS AN INVALID DATA ADDRESS OR INDICATOR VARIABLE ADDRESS
TOO MANY ITEMS RETURNED IN A SELECT OR INSERT LIST
A CONNECTION TO ALREADY EXISTS
THE SET CONNECTION OR RELEASE STATEMENT MUST SPECIFY AN EXISTING
CONNECTION
INVALID SPECIFICATION OF AN IDENTITY COLUMN
THE CONNECTION WAS SUCCESSFUL BUT ONLY SBCS WILL BE SUPPORTED
INVALID SPECIFICATION OF A ROWID COLUMN
THE NUMBER OF HOST VARIABLES IN THE STATEMENT IS NOT EQUAL TO THE NUMBER
OF DESCRIPTORS
A VALID CCSID HAS NOT YET BEEN SPECIFIED FOR THIS SUBSYSTEM
DATA ENCODED WITH DIFFERENT CCSIDS CANNOT BE REFERENCED IN THE SAME SQL
STATEMENT
THE ENCODING SCHEME SPECIFIED FOR THE MUST BE THE SAME AS THE CONTAINING

-875
-876
-877
-878
-879
-880
-881
-882
883
-900
-901
-902
-904
-905
-906
-908
-909
-910
-911
-913
-917
-918
-919
-922
-923
-924
-925
-926
-927
-929
-939
-947
-948
-950
-981

TABLE SPACE OR OTHER PARAMETERS


CANNOT BE USED WITH THE ASCII DATA REFERENCED
CANNOT BE CREATED, REASON
CCSID ASCII IS NOT ALLOWED FOR THIS DATABASE OR TABLE SPACE
THE PLAN_TABLE USED FOR EXPLAIN CANNOT BE ASCII
CREATE OR ALTER STATEMENT FOR CANNOT DEFINE A COLUMN, DISTINCT TYPE,
FUNCTION OR STORED PROCEDURE PARAMETER AS MIXED OR GRAPHIC WITH
ENCODING SCHEME
SAVEPOINT DOES NOT EXIST OR IS INVALID IN THIS CONTEXT
A SAVEPOINT WITH NAME ALREADY EXISTS, BUT THIS SAVEPOINT NAME CANNOT BE
REUSED
SAVEPOINT DOES NOT EXIST
ROLLBACK TO SAVEPOINT OCCURRED WHEN THERE WERE OPERATIONS THAT CANNOT
BE UNDONE OR AN OPERATION THAT CANNOT BE UNDONE OCCURRED WHEN THERE
WAS A SAVEPOINT OUTSTANDING
THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE THE APPLICATION PROCESS IS
NOT CONNECTED TO AN APPLICATION SERVER
UNSUCCESSFUL EXECUTION CAUSED BY A SYSTEM ERROR THAT DOES NOT PRECLUDE
THE SUCCESSFUL EXECUTION OF SUBSEQUENT SQL STATEMENTS
POINTER TO ESSENTIAL CONTROL BLOCK(RDA/CT) HAS VALUE 0, REBIND REQUIRED
UNSUCCESSFUL EXECUTION CAUSED BY AN UNAVAILABLE RESOURCE. REASON , TYPE
OF RESOURCE , AND RESOURCE NAME
UNSUCCESSFUL EXECUTION DUE TO RESOURCE LIMIT BEING EXCEEDED, RESOURCE
NAME = LIMIT = CPU SECONDS ( SERVICE UNITS) DERIVED FROM
THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE THIS FUNCTION IS DISABLED
DUE TO A PRIORERROR
ERROR USING AUTHORITY. BIND, REBIND, OR AUTO-REBIND OPERATION IS NOT
ALLOWED
THE OBJECT HAS BEEN DELETED OR ALTERED
THE SQL STATEMENT CANNOT ACCESS AN OBJECT ON WHICH A DROP OR ALTER IS
PENDING
THE CURRENT UNIT OF WORK HAS BEEN ROLLED BACK DUE TO DEADLOCK OR
TIMEOUT. REASON , TYPE OF RESOURCE , AND RESOURCE NAME
UNSUCCESSFUL EXECUTION CAUSED BY DEADLOCK OR TIMEOUT. REASON CODE , TYPE
OF RESOURCE , AND RESOURCE NAME
BIND PACKAGE FAILED
THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE A CONNECTION HAS BEEN LOST
A ROLLBACK OPERATION IS REQUIRED
AUTHORIZATION FAILURE: ERROR. REASON
CONNECTION NOT ESTABLISHED: DB2 , REASON , TYPE , NAME
DB2 CONNECTION INTERNAL ERROR, , ,
COMMIT NOT VALID IN IMS OR CICS ENVIRONMENT
ROLLBACK NOT VALID IN IMS OR CICS ENVIRONMENT
THE LANGUAGE INTERFACE (LI) WAS CALLED WHEN THE CONNECTING ENVIRONMENT
WAS NOT ESTABLISHED. THE PROGRAM SHOULD BE INVOKED UNDER THE DSN
COMMAND
FAILURE IN A CHANGED DATA CAPTURE EXIT:
ROLLBACK REQUIRED DUE TO UNREQUESTED ROLLBACK OF A REMOTE SERVER
THE SQL STATEMENT FAILED BECAUSE IT WILL CHANGE A TABLE DEFINED WITH DATA
CAPTURE CHANGES, BUT THE DATA CANNOT BE PROPAGATED
DISTRIBUTED OPERATION IS INVALID
THE LOCATION NAME SPECIFIED IN THE CONNECT STATEMENT IS INVALID OR NOT
LISTED IN THE COMMUNICATIONS DATABASE
THE SQL STATEMENT FAILED BECAUSE THE RRSAF CONNECTION IS NOT IN A STATE
THAT ALLOWS SQL OPERATIONS, REASON

-991

CALL ATTACH WAS UNABLE TO ESTABLISH AN IMPLICIT CONNECT OR OPEN TO DB2.


RC1= RC2=

SQL DECLARE nomecursor CURSOR FOR +


SELECT coluna1 [, coluna2..... , colunan ]
FROM nometabela
[WHERE condio]
[ORDER coluna1 [... , colunan] ]
SELECT

TBNAME,
NAME,
COLNO,
COLTYPE,
LENGTH,
SCALE,
DEFAULT,
REMARKS
FROM SYSIBM.SYSCOLUMNS
WHERE
TBNAME = :CH-TBNAME
ORDER BY COLNO

INTO

:TBNAME-X,
:NAME-X,
:COLNO-B,
:COLTYPE-X,
:LENGTH-B,
:SCALE-B,
:NULLS-X,
REMARKS-X

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+

You might also like