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;