› Fóruns › SQL e PL/SQL › Exception › Exception
Olá Ronaldo,
Existem varios tratamentos de erros no oracle.
Existem por exemplo tratamentos pré determinados pelo oracle e outros que podemos determinar.
Alguns pré determinados, os mais comuns:
NO_DATA_FOUND -> quando não se encontra um dado, ou select não retorna ou um array não contem dado.
TOO_MANY_ROWS -> um select retorna mais que uma linha.
DUP_VAL_ON_INDEX -> quando em um insert ou update ocorre restrição de chave primaria.
INVALID_NUMBER -> quando não é um número valido, esta tentando inserir um caracter em uma variavel/coluna numerica.
ZERO_DIVIDE -> quando algum número esta sendo dividido por zero.
COLLECTION_IS_NULL -> quando alguma coleção esta nula.
Dentre outros.
Você também pode determinar os erros da seguinte forma, por exemplo:
Quero que se ocorrer um erro, onde o pai de um registro não existir, mostre uma mensagem:
Crie as tabelas.
create table teste1 (id_teste1 number(2) primary key);
create table teste2 (id_teste2 number(2) primary key,
id_teste1 number(2));
alter table teste2 add constraint fk_teste1 foreign key (id_teste1) references teste1(id_teste1);
Execute o script de teste.
declare
parent_key_not_found exception;
pragma exception_init(parent_key_not_found,-02291);
begin
insert into teste2(id_teste2,id_teste1) values (1,1);
exception when parent_key_not_found then
dbms_output.put_line('Erro de chave estrangeira!');
end;
Desta forma você pode montar vários excepitons customizados.
Vlw Leonardo Litz