Professional Documents
Culture Documents
PL/SQL
Aula 04 - Exceções, Procedures e
Functions
lcm.lucia@ig.com.br
DECLARE DECLARE
BEGIN BEGIN
A exceção A exceção
é criada é criada
EXCEPTION EXCEPTION
BEGIN
EXCEPTION
WHEN NO_DATA_FOUND THEN
statement1;
statement2;
EXCEPTION
WHEN exceção1 [OR exceção2 . . .] THEN
instrução1;
instrução2;
. . .
[WHEN exceção3 [OR exceção4 . . .] THEN
instrução1;
instrução2;
. . .]
[WHEN OTHERS THEN
instrução1;
instrução2;
. . .]
– SQLCODE
Retorna o valor numérico do código de erro
– SQLERRM
Retorna a mensagem associada ao número de erro
BEGIN
update dept set loc = '&p_local‘
where deptno = v_deptno;
IF sql%notfound then
raise e_depto_invalido;
end if;
EXCEPTION
when e_depto_invalido then
dbms_output.put_line('departamento ' || v_deptno || ' não cadastrado.');
END;
/
DECLARE
e_emps_remaining EXCEPTION;
PRAGMA EXCEPTION_INIT ( e_emps_remaining, -2292);
v_deptno dept.deptno%TYPE := &p_deptno;
BEGIN
DELETE FROM dept
WHERE deptno = v_deptno;
COMMIT;
EXCEPTION
WHEN e_emps_remaining THEN
DBMS_OUTPUT.PUT_LINE ('Não pode excluir o departamento ' ||
v_deptno || '. Empregados existem. ');
END;
/
raise_application_error (error_number,
mensagem[, {TRUE | FALSE}]);
– Um procedimento que permite que você emita mensagens de
erro definidas pelo usuário a partir de subprogramas
armazenados
– Chamado somente a partir de um subprograma armazenado
em execução
DECLARE
V_mgr emp.mgr%type ;
BEGIN
V_mgr := &p_mgr;
DELETE FROM emp
WHERE mgr = v_mgr;
IF SQL%NOTFOUND THEN
RAISE_APPLICATION_ERROR(-20202,'Este não é um gerente válido');
END IF;
END;
/
Identificação do procedimento
Definição dos parâmetros ou
parâmetro
Conjunto de instruções do
procedimento
Submissão do código ao SGBDR
END [nome_procedimento];
Identificação da função
Definição dos parâmetros ou
parâmetro
Conjunto de instruções do função
Submissão do código ao SGBDR
Procedure Function
É chamada em uma declaração SQL, É chamada como parte de uma
blocos PL/SQL ou por uma aplicação expressão
Não contém a clausula return no Contém a clausula return no cabeçalho
cabeçalho
Pode retornar nenhum, um ou vários Retorna somente um valor
valores
Pode devolver um retorno à rotina Retorna obrigatoriamente um valor para
chamadora a rotina chamadora.