segunda-feira, 4 de abril de 2016
Tratamento de Exceções - Oracle
•Exceções
Erros e imprevistos que podem ocorrer durante a execução de um bloco PL/SQL
•SGBD
Ao encontrar um erro ou um imprevisto,aborta a execução e procura por uma área
de exceções
•Tipos
Predefinidas ou definidas pelo usuário
Comando
EXCEPTION
WHEN nome_da_exceção
THEN relação de comandos;
Exemplo
set serveroutput on;
DECLARE
nome aluno.nome_aluno%Type;
sexo aluno.sexo_aluno%Type;
BEGIN
nome := 'Pedro'; sexo := 'm';
INSERT INTO aluno VALUES (1, nome, sexo);
dbms_output.put_line ('Inserção executada com sucesso.');
EXCEPTION
WHEN
Dup_Val_On_Index
THEN
dbms_output.put_line ('Aluno já cadastrado.' );
WHEN
Others
THEN
dbms_output.put_line ('Erro no cadastramento.' );
END;
•CURSOR_ALREADY_OPEN
Ocorre quando se tenta abrir um cursor que já está aberto
•DUP_VAL_ON_INDEX
Ocorre quando se tenta armazenar um valor duplicado em uma coluna de uma tabela que possui chave única ou primária
•INVALID_CURSOR
Ocorre quando se tenta realizar uma operação ilegal em um cursor
•INVALID_NUMBER
Ocorre na tentativa de converter uma stringpara um número, quando a string não representa um número válido
•LOGIN_DENIED
Ocorre na tentativa de conexão com o BD com um usuário/senha inválido
•NO_DATA_FOUND
Ocorre quando o comando SELECT ... INTO não retorna nenhuma linha
•NO_LOGGED_ON
Ocorre na tentativa de acessar o banco de dados sem que se esteja conectado a ele
•PROGRAM_ERROR
Ocorre em caso de problemas internos do PL/SQL
•ROWTYPE_MISMATCH
Ocorre se o retorno do cursor e a variável PL/SQL para retorno do cursor forem de tipos incompatíveis
•STORAGE_ERROR
Ocorre se não houver memória suficiente para a execução de um bloco PL/SQL ou caso a memória esteja com problemas
•TIMEOUT_ON_RESOURCE
Ocorre quando acontecer um timeout enquanto aguarda-se um recurso
•TOO_MANY_ROWS
Ocorre quando um comando SELECT ... INTO retornar mais de uma linha
•VALUE_ERROR
ocorre quando houver um erro aritmético, de conversão, truncagem ou tamanho
•ZERO_DIVIDE
Ocorre na tentativa de dividir qualquer número por zero
•OTHERS
“Look up an error message” Trata outros erros, usando as funções
SQL_CODE (número do erro) e
SQLERRM (texto do erro)
Exemplo (2/2)
EXCEPTION
WHEN obrigatorio
THEN
dbms_output.put_line ('Preencher todos os campos.');
WHEN Dup_Val_On_Index
THEN dbms_output.put_line ('Aluno já cadastrado.' );
WHEN Others
THEN dbms_output.put_line ('Erro no cadastramento.' );
END;
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário