Buscar

PL - Aula 06 - Tratamento de Excecao

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Linguagem 
Procedural 
Tratamento de 
Exceção
PROF. Ms. J FLÁVIO VASCONCELOS ALVES
ASSUNTOS AULA 6
2
1)Tratamento de Exceção
Obs: Efetuar cadastro em
https://livesql.oracle.com/
3
TRATAMENTO DE EXCEÇÃO
Uma exceção é uma ocorrência não
esperada, ou diferente daquela
programada para ser executada_ Em
outras palavras, uma exceção é um erro
que ocorre durante .a execução do
bloco PL /SQL.
(PUGA;FRANÇA; GOAYA, 2013)
4
TRATAMENTO DE EXCEÇÃO P2
Os erros de execução {run time) e tão
associados à utilização do programa .
Nesse caso quando as exceções não
são previstas e tratadas, o erro gerado
interrompe o processamento e uma
mensagem é devolvida para a
aplicação.
(PUGA;FRANÇA; GOAYA, 2013)
5
TRAT DE EXCEÇÃO estrutura
1 DECLARE
2 nome _ exceçao EXCEPTION;
3 BEGlN
4 RAISE exceçao;
5 EXCEPTION
6 WHEN nome_exceçao THEN
7 instruções para tratamento da exceçao;
8 WHEN OTHERS THEN
9 instruções para tratamento da exceçao;
10 END;
(PUGA;FRANÇA; GOAYA, 2013)
6
DECLARAÇÃO DE EXCEÇÃO
A declaração de uma exceção deve ser feita pelo
desenvolvedor na seção declarativa conforme
indicado na linha 2. A identificação de uma e
exceção segue as mesmas regra adotadas para
identificação de variáveis.
abe1tura da exceção pode ser indicada na área
de processamento (linha 4), ou seja ao ocorrer
uma exceção no fluxo do processamento o
programa é desviado para a seção de tratamento
de exceções iniciada na linha 5. Cada exceção
deverá ser indicada em um manipulador (handler)
para tratamento de exceções, indicado na linha 6
{WHEN nome_exceçao THEN)
(PUGA;FRANÇA; GOAYA, 2013)
7
DECLARAÇÃO DE EXCEÇÃO
A exceção será avaliada pelo nome e
direcionará a execução das instruções
a serem realizadas; caso não seja
encontrado o manipulador para a
exceção em questão serão
executadas as instruções do
manipulador WHEN OTHERS THEN
linha 8), utilizado para tratamento de
exceções genéricas.
(PUGA;FRANÇA; GOAYA, 2013)
8
EXCEÇÕES PREDEFINIDAS
O Oracle possui algumas exceções
predefinidas para situações comuns e
fazem parte do conjunto básico para
manipulação PL/SQL e não precisam
ser declaradas ou abertas
explicitamente no bloco.
(PUGA;FRANÇA; GOAYA, 2013)
9
EXCEÇÕES PREDEFINIDAS
(PUGA;FRANÇA; GOAYA, 2013)
10
EXCEÇÕES PREDEFINIDAS
Um exemplo de exceção é a divisão por
zero. Como não é possível dividir um
número por zero para realizar essa
operação aritmética, o divisor, deve ser
diferente de· 0, sendo assim, o valor
esperado para divisor não está adequado..
Nesse caso não existe erro de sin
taxe, mas o programa não funciona, por
tanto há uma exceção. Por ser um erro
bastante comum, a Oracle disponibiliza uma
exceção predefinida para ele.
(PUGA;FRANÇA; GOAYA, 2013)
11
Exemplo 1 DIVISÃO POR ZERO
declare
divisor number:=0;
dividendo number:=89;
result number;
begin
result := dividendo/divisor;
dbms_output.put_line('Divisao=' || result);
EXCEPTION
WHEN ZERO_DIVIDE THEN
dbms_output.put_line('Nao é possível
realizar divisão por zero ');
end;
(PUGA;FRANÇA; GOAYA, 2013)
12
DIVISÃO POR ZERO
Observe e, nas linhas 3 e 4, são, declaradas as
variáveis v_x e v_y, as quais , receberão os
valores por variáveis de substituição ( &divisor e
&dividendo respectivamente)_ a linha 7 a
variável v _resultado recebe o resultado da divisão
entre v_y e v_x. Caso o valor de v_x seja zero,
sera gerado um erro que acionar a exceção
ZERO_DlVlDE e o fluxo do processamenlo ser
desviado para dentro do tratamento de exceções
(linha 8). função disso, será realizado o
tratamento da exceção, que é a apresentação da
mensagem: ' Não é possível realizar divisao
por zero', vista na linha 9 .
(PUGA;FRANÇA; GOAYA, 2013)
13
EXCEÇÕES DEFINIDAS pelo USUARIO
Além das exceções predefinidas
, é possível criar exceções
personalizadas.
E o recurso permite a criação de
tratamentos de erros específicos
para um determinado fim.
(PUGA;FRANÇA; GOAYA, 2013)
14
PL/SQL – exemplo banco de dados
(PUGA;FRANÇA; GOAYA, 2013)
create table fatura(
nro_venda number(10)not null,
vlr_fatura number(10),
primary key (nro_venda))
SELECT * from fatura;
INSERT INTO fatura VALUES (1,1000);
INSERT INTO fatura VALUES (2,2000);
INSERT INTO fatura VALUES (3,3000);
SELECT * from fatura;
15
Exemplo 2 SQL%NOTFOUND
declare
nrovenda_invalido EXCEPTION;
v_nrovenda fatura.nro_venda%type := 10;
begin
UPDATE fatura SET vlr_fatura = 5000 WHERE
nro_venda = v_nrovenda;
IF sql%notfound THEN
RAISE nrovenda_invalido;
END IF;
EXCEPTION
WHEN nrovenda_invalido THEN
dbms_output.put_line('Nro da venda nao
existe. Nao foi possível atualizar a venda.');
end; (PUGA;FRANÇA; GOAYA, 2013)
16
WHEN OTHERS
Também é possível criar um
tratamento para exceções não
previstas, comtratamentos
específicos. Para isso, pode-se
incluir a instrução WHEN
OTHERS.
(PUGA;FRANÇA; GOAYA, 2013)
17
Exemplo 3 WHEN OTHERS
declare
nrovenda_invalido EXCEPTION;
v_nrovenda fatura.nro_venda%type := 10;
v_codigo_erro varchar2(20);
v_mensagem_erro varchar2(255);
begin
DELETE FROM fatura WHERE nro_venda = v_nrovenda;
IF sql%notfound THEN
RAISE nrovenda_invalido;
END IF;
EXCEPTION
WHEN nrovenda_invalido THEN
dbms_output.put_line('Nro da venda nao existe. Nao foi possível
excluir a venda.');
WHEN others THEN
v_codigo_erro := SQLCODE;
v_mensagem_erro := SQLERRM;
dbms_output.put_line('Erro desconhecido ' || v_codigo_erro ||
v_mensagem_erro);
end;
(PUGA;FRANÇA; GOAYA, 2013)
18
RAISE APPLICATION ERROR
O procedimento
RAISE_APPLICATION_ERROR é
utilizado para comunicar uma
exceção definida interativamente,
retornando um código ou uma
mensagem de erro não
padronizada. Para aplicar a
instrução, utiliza-se a sintaxe:
(PUGA;FRANÇA; GOAYA, 2013)
19
Exemplo 4 RAISE APPLICATION ERROR
declare
nrovenda_invalido EXCEPTION;
v_nrovenda fatura.nro_venda%type := 10;
v_codigo_erro varchar2(20);
v_mensagem_erro varchar2(255);
begin
DELETE FROM fatura WHERE nro_venda =
v_nrovenda;
IF sql%notfound THEN
RAISE_APPLICATION_ERROR(-20201, 'Fatura
não encontrada');
END IF;
end;
(PUGA;FRANÇA; GOAYA, 2013)
MODIFICANDO DONO ou GRUPO
20
OBRIGADO !!!
ZAP 9750-2901
@profjsflavioalves

Continue navegando