Os pacotes PL/SQL agrupam funções e procedures relacionadas, juntamente com variáveis e cursores comuns. O pacote consiste em duas partes: uma especificação do pacote e um corpo de pacote. Na especificação, os métodos e atributos dos pacotes são expostos; a implementação dos métodos, juntamente com quaisquer métodos privados e atributos permanecem ocultos no corpo do pacote. A utilização de um pacote, em vez de uma procedure ou função independente, permite que a procedure ou função incorporada seja alterada sem invalidar nenhum objeto que referencia elementos da especificação do pacote, evitando assim a recompilação dos objetos que referenciam o pacote. Vejam que a alternativa está perfeitamente correta.
Fonte: https://www.estrategiaconcursos.com.br/blog/prova-da-semana-comentario-da-prova-do-stm-programacao-de-sistemas-banco-de-dados-e-bi-tecnico/
Pra mim o gabarito está ERRADO, no corpo do package é onde expomos a implementação dos metodos.
Já na especificação os métodos juntamente com quaisquer métodos privados e atributos permanece ocultas
VEJAM O CÓDIGO ABAIXO:
--Especificação--
CREATE OR REPLACE PACKAGE funcionario AS
// get nome completo do funcionario
FUNCTION get_nomeCompleto(n_func_id NUMBER)
RETURN VARCHAR2;
// get salario do funcionario
FUNCTION get_salario(n_func_id NUMBER)
RETURN NUMBER;
END funcionario;
/*
Package funcionario body
*/
CREATE OR REPLACE PACKAGE BODY funcionario AS
// get funcionário nomeCompleto
FUNCTION get_nomeCompleto(n_func_id NUMBER) RETURN VARCHAR2 IS
v_nomeCompleto VARCHAR2(46);
BEGIN
SELECT primeiro_nome || ',' || ultimo_nome
INTO v_nomeCompleto
FROM funcionarios
WHERE empresa_id = n_func_id;
RETURN v_nomeCompleto;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
WHEN TOO_MANY_ROWS THEN
RETURN NULL;
END; // end get_nomeCompleto
get salario
FUNCTION get_salario(n_func_id NUMBER) RETURN NUMBER IS
n_salario NUMBER(8,2);
BEGIN
SELECT salario
INTO n_salario
FROM funcionarios
WHERE empresa_id = n_func_id;
RETURN n_salario;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
WHEN TOO_MANY_ROWS THEN
RETURN NULL;
END;
END funcionario;