Ajuda para criar Package

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
rvneto
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qui, 23 Jun 2011 1:18 pm
Localização: Caxias do Sul

Olá,
Estou iniciando em PL/SQL e preciso criar a seguinte Package e não sei direito a estrutura e como poderia fazer. alguém poderia ajudar?

Crie uma package chamada COMISSAO que valida o valor da comissão de um
empregado. A package deve conter uma variável global do mesmo tipo da
coluna comissao da tabela EMP, um procedimento (INICIALIZA_COMISSAO) e
uma função (VALIDA_COMISSAO).
A função VALIDA_COMISSAO receberá por parâmetro um valor de comissão.
Essa função deverá buscar o valor máximo da comissão entre os empregados
existentes e caso o valor do parâmetro seja maior que o máximo retornar FALSE,
senão retornar TRUE.
O procedimento INICIALIZA_COMISSAO deve testar: se a comissão for válida
(função VALIDA_COMISSAO retornar TRUE), atribui o seu valor à variável global
definida, senão emite um erro de valor inválido.

EMP
EMP_ID NUMBER(8) NOT NULL
NOME VARCHAR2(60) NOT NULL
COMISSAO NUMBER(3,2) NULL

Tenho feito isso...

Selecionar tudo

	CREATE OR REPLACE 
	PACKAGE PKG_COMISSAO
	AS
		Valor	  EMP.Comissao%TYPE;		
		FUNCTION  VALIDA_COMISSAO (Vl_Comissao IN NUMBER) RETURN BOOLEAN;
	        PROCEDURE INICIALIZA_COMISSAO;
	END PKG_COMISSAO;

	CREATE OR REPLACE 
	PACKAGE BODY PKG_COMISSAO
	AS   
		FUNCTION VALIDA_COMISSAO (Vl_Comissao IN NUMBER)
	      		RETURN BOOLEAN
	        IS
		BEGIN
			vValor   EMP.Comissao%TYPE;  
       			
			BEGIN
			   SELECT SUM(Comissao)
                             INTO vValor
                             FROM EMP                            
			END;

			IF Vl_Comissao > vValor THEN
			   RETURN(FALSE);
                        ELSE
                           RETURN(TRUE);
                        END IF;
		END;

		PROCEDURE INICIALIZA_COMISSAO
		BEGIN                
                ...
		END;
	END PKG_COMISSAO;
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5013
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

E não está certo isso que você fez ?
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes