Aula 10 – Aprenda Como Funciona o Gerenciamento de Erros no Oracle

Oi Pessoal, tudo bem?

Com um pouco de atraso, mas a tempo, segue a aula 10 do Curso Oracle PL/SQL. Nesta aula você vai aprender como funciona o Gerenciamento de Erros no Oracle. Está é a última aula teórica antes de vocês começarem a criar os Programas armazenados dentro do Banco de Dados.

Segue abaixo os scripts criados durante o vídeo e assistam até o final, porque sempre tem uma surpresa no meio :).

[well]

create table tb_produto(id_produto number(10) Primary Key,
nm_produto varchar2(30));

INSERT INTO TB_PRODUTO (ID_PRODUTO, NM_PRODUTO)
VALUES (1, ‘COCA-COLA’);

INSERT INTO TB_PRODUTO (ID_PRODUTO, NM_PRODUTO)
VALUES (1, ‘Coca-cola’);

BEGIN
INSERT INTO TB_PRODUTO (ID_PRODUTO, NM_PRODUTO)
VALUES (1, ‘Coca-cola’);
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
UPDATE TB_PRODUTO
SET NM_PRODUTO = ‘Coca-Cola’
WHERE ID_PRODUTO = 1;
DBMS_OUTPUT.PUT_LINE(‘ENTROU NA EXCEPTION’);
END;
/

DECLARE
V_NM_PRODUTO TB_PRODUTO.NM_PRODUTO%TYPE;
BEGIN
SELECT NM_PRODUTO INTO V_NM_PRODUTO FROM TB_PRODUTO
WHERE ID_PRODUTO = 2;

DBMS_OUTPUT.PUT_LINE(‘O PRODUTO É :’ ||V_NM_PRODUTO );

EXCEPTION WHEN NO_DATA_FOUND THEN
INSERT INTO TB_PRODUTO (ID_PRODUTO, NM_PRODUTO)
VALUES (2, ‘Fanta’);
END;
/

SELECT * FROM TB_PRODUTO;

INSERT INTO TB_PRODUTO (ID_PRODUTO, NM_PRODUTO)
VALUES (3, ‘Coca-Cola’);
DECLARE
V_NM_PRODUTO TB_PRODUTO.NM_PRODUTO%TYPE;
BEGIN
SELECT NM_PRODUTO INTO V_NM_PRODUTO FROM TB_PRODUTO
WHERE NM_PRODUTO = ‘Coca-Cola’;

DBMS_OUTPUT.PUT_LINE(‘O PRODUTO É :’ ||V_NM_PRODUTO );

EXCEPTION WHEN NO_DATA_FOUND THEN
INSERT INTO TB_PRODUTO (ID_PRODUTO, NM_PRODUTO)
VALUES (2, ‘Fanta’);

WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE (‘TEM MAIS DE UMA COCA-COLA NA TABELA’);
END;
/

DECLARE
V_ZERO_DIVIDE NUMBER(10);
BEGIN
V_ZERO_DIVIDE := 10/0;
DBMS_OUTPUT.PUT_LINE (V_ZERO_DIVIDE);
EXCEPTION WHEN ZERO_DIVIDE THEN
DBMS_OUTPUT.PUT_LINE (‘NÃO PODE DIVIDIR POR ZERO’);
END;

DECLARE
V_ZERO_DIVIDE NUMBER(10);
BEGIN
V_ZERO_DIVIDE := 10/0;
DBMS_OUTPUT.PUT_LINE (V_ZERO_DIVIDE);
EXCEPTION WHEN ZERO_DIVIDE THEN
DBMS_OUTPUT.PUT_LINE (‘NÃO PODE DIVIDIR POR ZERO’);
END;
/

DECLARE
V_ZERO_DIVIDE NUMBER(10);
BEGIN
V_ZERO_DIVIDE := 10/0;
DBMS_OUTPUT.PUT_LINE (V_ZERO_DIVIDE);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE (‘NÃO PODE DIVIDIR POR ZERO ‘ || sqlerrm);
END;
/
DECLARE
e_Erro exception;
BEGIN
IF 1 = 1 THEN
RAISE e_Erro;
END IF;
DBMS_OUTPUT.PUT_LINE (‘Esta com um problema não entrou na Exception’);
EXCEPTION WHEN e_Erro THEN
DBMS_OUTPUT.PUT_LINE (‘Esta tudo certo’);
END;
/

 

[/well]

1 comentário

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *