Pular para o conteúdo

Fóruns SQL e PL/SQL Exception Exception

#88624
Avatar photoLeonardo Litz
Participante

    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