Bogos

novembro 18, 2008

Exceptions PL-SQL Oracle

Filed under: SQL — Tags:, , , , — Bogos @ 4:27 pm

Exceptions são nada mais nada menos que exceções que podem ocorrer durante a execucação de blocos PL-SQL. Se comportante semelhantemente ao bloco Try/Catch/Finally do Java e C# ou um On Error GoTo.

Sintaxe:

FUNCTION fnc_teste() AS
BEGIN
–bloco pl-sql
EXCEPTION WHEN {exceção} THEN
–bloco exception
END;

Algumas exceções (mais comuns):

NO_DATA_FOUND – uma instrução SELECT INTO não retorna linhas, ou seu programa referencia um elemento deletado na tabela ou então um elemento não inicializado em um índice por tabela.

ZERO_DIVIDE – uma operação matemática no bloco executou uma divisão por zero.

INVALID_NUMBER – falha na conversão de um caracter string para um numero (numa instrução SQL) porque a string não representa um número válido, numa instrução procedural VALUE_ERROR é chamada.

TOO_MANY_ROWS – uma instrução SELECT INTO retorna mais de uma linha.

ACCESS_INTO_NULL – tentativa de passar valores para atributos de um objeto não inicializado.

CURSOR_ALREADY_OPEN – tentativa de abrir um cursor já aberto.

DUP_VAL_ON_INDEX – tentativa de inserir um valor duplicado na tabela numa coluna com UNIQUE KEY.

INVALID_CURSOR – tentativa de realizar uma operação com um cursor inexistente ou fechado.

LOGIN_DENIED – tentativa de logar no Oracle com um usuário ou senha inválidos.

NOT_LOGGED_ON – tentativa de fazer uma chamada ao banco sem estar conectado ao Oracle.

PROGRAM_ERROR – erro interno do PL/SQL.

ROWTYPE_MISMATCH – o host da variável de cursor e a variável de cursor do PL/SQL envolvidos são incompatíveis com os tipos retornados.

STORAGE_ERROR – falha ao armazenar os dados na memória, tanto por falta como por estar corrompida.

TIMEOUT_ON_RESOURCE – ocorreu um time-out enquanto o Oracle aguarda por um recurso.

VALUE_ERROR – uma conta, conversão, truncamento ou tamanho de constraint com formato numérico inválido. Numa instrução procedural VALUE_ERROR é retornada se uma conversão de caracter ou string em número falha. Numa instrução SQL esse mesmo erro é retornado como INVALID_NUMBER.

OTHERS – outro erro que não esteja sendo tratado.

Criando uma exception e chamando-a manualmente:

DECLARE
sem_comissao EXCEPTION; –declara uma exception
BEGIN
IF comissao IS NULL THEN
RAISE sem_comissao; –chama a exception
END IF;
bonus := (salario * 0.10) + (comissao * 0.15);
EXCEPTION
WHEN sem_comissao THEN –bloco da exception criada
RAISE_APPLICATION_ERROR(-21000,’Não há comissão!’);
END;
\

Bom, nota-se que temos um RAISE_APPLICATION_ERROR com o código 21000, porém os códigos de erro do Oracle vão de -20000 à -20999, portanto a mensagem de erro do Oracle será nula e aparecerá somente a mensagem definida pelo programador.

Sintaxe:

RAISE_APPLICATION_ERROR(no_erro, mensagem);

‘no_erro’ é um inteiro negativo entre -20000 à -20999 e ‘mensagem’ é uma string de até 2048 bytes. Uma aplicação pode chamar o RAISE_APPLICATION_ERROR somente de um subprograma (ou método) que está sendo executado. Quando startado, encerra o subprograma e retorna a mensagem e o número do erro definidos pelo programador para a aplicação.

E isso é tudo pessoal! Abraços!

Anúncios

4 Comentários »

  1. muito util para mim, que estou começando! obrigado

    Comentário por Danilo Rubervany — janeiro 6, 2009 @ 11:33 am

  2. Oi Ivens gatinho…
    Nossa..como vc é inteligente…
    me liga qlq dia

    bjos

    Comentário por Thais — julho 17, 2009 @ 6:00 pm

  3. Conteúdo muito útil!!! Obrigada!!!

    Comentário por Susan Mélany — fevereiro 20, 2010 @ 3:56 pm

  4. muito bom
    Obrigado

    Comentário por Tiago — setembro 24, 2011 @ 2:41 pm


RSS feed for comments on this post. TrackBack URI

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Crie um website ou blog gratuito no WordPress.com.

%d blogueiros gostam disto: