Clique e faça o dos scripts

Transcrição

Clique e faça o dos scripts
-- TOO_MANY_ROWS
Retorna mais de uma linha em uma consulta e coloca esse em uma variável que não um array
que aceite mais de um valor
-- NO_DATA_FOUND
Nenhuma linha foi encontrada
-- DUP_VAL_ON_INDEX
Teve uma restrição de chave primária no insert do índice
-- OTHERS
Qualquer restrição que não foi definida anteriormente
-- ZERO_DIVIDE
Tentando dividir um valor por zero
-- INVALID_CURSOR
Fez referência a um cursor inexistente ou já fechado
-- INVALID_NUMBER
Fez uma conversão em um valor que gerou um número inválido
-- CÓDIGOS INTERNOS DO ORACLE
SQLCODE: Retorno o código do último erro que aconteceu no programa
SQLERRM: Retorna a mensagem de erro associada ao código do erro
-- Códigos
create or replace package PKG_HANGOUT_01 is
-- Author : WILLIAM
-- Created : 27/11/2014 22:39:18
-- Purpose : Package Criada para a aula ao vivo dia 27/11/2014
PROCEDURE SP_NOVA_DATA_CONTR (P_DT_CONTRATACAO IN DATE,
P_ID_FUNCIONARIO IN NUMBER);
FUNCTION FN_NOME_FUNCIONARIO (F_ID_FUNCIONARIO IN NUMBER)
RETURN VARCHAR2;
end PKG_HANGOUT_01;
create or replace package body PKG_HANGOUT_01 is
create or replace package body PKG_HANGOUT_01 is
PROCEDURE SP_NOVA_DATA_CONTR(P_DT_CONTRATACAO IN DATE,
P_ID_FUNCIONARIO IN NUMBER) IS
v_number NUMBER;
BEGIN
v_number := 1/0;
UPDATE employees
SET hire_date = P_DT_CONTRATACAO
WHERE employee_id = P_ID_FUNCIONARIO;
EXCEPTION WHEN ZERO_DIVIDE THEN
NULL;
END SP_NOVA_DATA_CONTR;
FUNCTION FN_NOME_FUNCIONARIO(F_ID_FUNCIONARIO IN NUMBER) RETURN VARCHAR2
IS
/*CURSOR CUR_NOME_FUNCIONARIO (C_ID_FUNCIONARIO IN NUMBER) IS
SELECT first_name
FROM employees
WHERE employee_id = C_ID_FUNCIONARIO ;*/
V_NOME_FUNCIONARIO employees.first_name%TYPE;
BEGIN
SELECT first_name
INTO V_NOME_FUNCIONARIO
FROM employees
WHERE employee_id = F_ID_FUNCIONARIO ;
RETURN V_NOME_FUNCIONARIO;
EXCEPTION WHEN NO_DATA_FOUND THEN
V_NOME_FUNCIONARIO := 'NO_DATA_FOUND';
RETURN V_NOME_FUNCIONARIO;
WHEN OTHERS THEN
V_NOME_FUNCIONARIO := 'OTHERS';
RETURN V_NOME_FUNCIONARIO;
END FN_NOME_FUNCIONARIO;
end PKG_HANGOUT_01;
BEGIN
PKG_HANGOUT_01.SP_NOVA_DATA_CONTR(P_DT_CONTRATACAO => TRUNC(SYSDATE),
P_ID_FUNCIONARIO => 108);
END;
DECLARE
NM_FUNCIONARIO employees.first_name%TYPE;
BEGIN
NM_FUNCIONARIO := PKG_HANGOUT_01.FN_NOME_FUNCIONARIO(F_ID_FUNCIONARIO =>
108);
DBMS_OUTPUT.PUT_LINE ('Nome Funcionário :'|| NM_FUNCIONARIO);
END;
SELECT PKG_HANGOUT_01.FN_NOME_FUNCIONARIO(F_ID_FUNCIONARIO => employee_id)
FROM employees
WHERE employee_id = 108;
BEGIN
PKG_HANGOUT_01.SP_NOVA_DATA_CONTR(P_DT_CONTRATACAO => TRUNC(SYSDATE),
P_ID_FUNCIONARIO => 108);
END;

Documentos relacionados