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]
Link permanente
Sim, preciso de maior dedicação de minha parte. Muito bom o curso… (-;