Tratamento de Exceções

Documentos relacionados
Material Teórico. Procedures, Functions, Exceptions e Triggers. Responsável pelo Conteúdo: Prof. Ms. Alexander Gobbato Albuquerque

Linguagem PL/SQL e Triggers

SQL Pacotes. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados Pacotes

Oracle Comandos para Processamento de Transações

Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

TECNOLOGIA DE BASES DE DADOS Linguagem PL/SQL e Triggers

Banco de Dados II. PL/SQL - Procedures -Cursor - Funções. Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.

SQL Procedural. Josino Rodrigues Neto

SQL Gatilhos (Triggers)

BD II (SI 587) Procedimentos Armazenados

Logado no OracleXE vamos acessar a opção:

Treinamento. Sumário

Prof. Josenildo Silva

Funções Definidas pelo Usuário

Oracle Database: Fundamentos de SQL e PL/SQL

Oracle PL/SQL Overview

Introdução ao PL/SQL

Banco de Dados II. PL/SQL Introdução. Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.

Fundamentos de Programação ORACLE: SQL. Prof. Walter Gima

Monitoria GDI Aula Prática. DML + PL/SQL parte 1

Create Sequence Cria uma sequence. Uma sequence é um objeto que permite vários usuários gerarem valores inteiros sem repetição.

Banco de Dados I Introdução SQL

FERRAMENTA DE APOIO A REESTRUTURAÇÃO DE CÓDIGO FONTE EM LINGUAGEM PL/SQL BASEADO EM PADRÕES DE LEGIBILIDADE

2. Criar um bloco PL/SQL anônimo para imprimir as tabuadas abaixo: 5 X 10 = 50 5 X 2 = X 10 = X 2 = 2...


Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

IEC Banco de Dados I Aula 11 Técnicas de Programação SQL


FUNCTION ) RETURNS INTEGER AS $$ DECLARE

Tratamento de Exceções

Sistemas de Informação

ESTUDO DE CASO EM PL/SQL

Sumário. Discussão Exercícios. Discussão Exercícios. Discussão Exercícios. Discussão Exercícios. Programando com SQL Stored Procedures

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

f. Exemplo: verificar condição de aprovação de alunos

Oracle Database 10g: Fundamentos de SQL e PL/SQL

Bancos de Dados I. Integridade semântica

Tarefa Orientada 17 Scripts

Sistemas de Informação e Bases de Dados 2012/2013. Stored Procedures e Triggers

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

Bases de Dados 2012/2013 Funções/procedimentos e triggers. Helena Galhardas 2012 IST. Bibliografia. Manual referência PostgreSQL

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

Monitoria GDI. Aula Prática. OR (Aula 1)

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

Linguagem SQL Restrições, Triggers e Views

Tratamento de Exceções. LPG II Java. Tratamento de Exceções. Conceito de Exceções. Exemplo

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

PL/pgSQL por Diversão e Lucro

Oracle PL/SQL Triggers

BD II (SI 587) Programação SQL. Prof. Josenildo Silva.

Oracle Database 10g: Programação com PL/SQL NOVO

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

Administração de Banco de Dados

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho

Oracle Database 11g: Introdução à Linguagem SQL Novo

Triggers(Gatilhos) Tiago Alves de Oliveira

Oracle 10g: SQL e PL/SQL

Aula 06 Sistemas Embarcados LT38C

MANUAL INSTALAÇÃO WEB SERVICE

Banco de Dados. Professora: Luciana Faria

A linguagem SQL

BDII SQL TRANSAÇÃO Revisão 2

O AMBIENTE DE PROGRAMAÇÃO VISUAL -PLANO DE ENSINO. Prof. Angelo Augusto Frozza, M.Sc.

Introdução à Linguagem Lua Variáveis e Expressões

PROCEDURES, FUNÇÕES, PL/SQL, CURSORES, VIEW, ÍNDICE e SEQUÊNCIA. Stored procedure PL/SQL. Procedimentos e Funções. Procedimento (procedure) Procedure

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

1.6. Tratamento de Exceções

FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA. Módulo de Programação Prof. Bruno Maciel

IMPLEMENTAÇÃO DE BANCO DE DADOS

Hugo Pedro Proença, 2007

Transcrição:

Tratamento de Exceções Laboratório de Bases de Dados

Tratamento de Exceções 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 definidas pelo usuário

Comando EXCEPTION WHEN nome_da_exceção THEN relação de comandos; 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 END; WHEN Dup_Val_On_Index THEN dbms_output.put_line ('Aluno já cadastrado.' ); WHEN Others THEN dbms_output.put_line ('Erro no cadastramento.' );

Exceções Predefinidas 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

Exceções Predefinidas INVALID_NUMBER ocorre na tentativa de converter uma string para 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

Exceções Predefinidas 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

Exceções Predefinidas 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

Exceções Predefinidas 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 SQLCODE (número do erro) e SQLERRM (texto do erro)

Exceções Definidas pelo Usuário Características precisam ser declaradas e chamadas explicitamente Declaração realizada na área de declaração sintaxe: nome_da_exceção EXCEPTION Utilização realizada na área de comandos sintaxe: RAISE nome_da_exceção

Exceções Definidas pelo Usuário DECLARE nome_exceção EXCEPTION; BEGIN relação_de_comandos; END; IF... THEN RAISE nome_exceção; END IF; relação_de_comandos; EXCEPTION WHEN nome_exceção THEN relação_de_comandos; exceção tem que ser declarada!

Exemplo (1/2) set serveroutput on; DECLARE nusp aluno.nusp%type; nome aluno.nome_aluno%type; sexo aluno.sexo_aluno%type; valida_campos EXCEPTION; BEGIN nusp := 4; nome := 'Daniel'; -- sexo := 'm'; IF (nusp IS NULL) OR (sexo IS NULL) OR (nome IS NULL) THEN RAISE valida_campos; ELSE INSERT INTO aluno VALUES (nusp, nome, sexo); END IF;

Exemplo (2/2) EXCEPTION END; WHEN valida_campos 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.' ); Diferentes tipos de exceção podem ser combinadas na área de exceções!

EXCEPTION_INIT Manipulação de exceção sem nome exceção OTHERS PRAGMA EXCEPTION_INIT Pragma renomeia um erro Oracle identificado por seu número permite que a exceção seja referenciada pelo novo nome Ø diretiva de compilação

COMANDO DECLARE nome_exceção EXCEPTION; PRAGMA EXCEPTION_INIT (nome_exceção, código_erro); BEGIN END; relação_de_comandos;... EXCEPTION WHEN nome_exceção THEN relação_de_comandos;

Exemplo (1/2) set serveroutput on; DECLARE nusp aluno.nusp%type; nome aluno.nome_aluno%type; sexo aluno.sexo_aluno%type; obrigatorio EXCEPTION; PRAGMA EXCEPTION_INIT (obrigatorio, -1400); BEGIN nusp := 4; nome := 'Daniel'; -- sexo := 'm'; INSERT INTO aluno VALUES (nusp, nome, sexo);

Exemplo (2/2) EXCEPTION END; 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.' ); Diferentes tipos de exceção podem ser combinadas na área de exceções!

RAISE APPLICATION ERROR Permite a emissão de mensagens de erro definidas em subprogramas Comando RAISE_APPLICATION_ERROR (código_erro, texto ); código erro número inteiro negativo entre -20000 e -20999 texto string de até 2.048 caracteres

Exemplo (1/2) CREATE OR REPLACE PROCEDURE exemplo (x in number) IS BEGIN if x = 1 then raise_application_error (-20000, 'Vale 1'); else raise_application_error (-20001, 'Não vale 1'); end if; END exemplo;

Exemplo (2/2) DECLARE x number(1) := 1; BEGIN exemplo (x); EXCEPTION END; WHEN Dup_Val_On_Index THEN dbms_output.put_line ('Teste'); WHEN Others THEN dbms_output.put_line (SQLERRM);