PROCEDURE DENTRO DE PROCEDURE

0 views
Skip to first unread message

Profa. Simone Cristina Aléssio

unread,
Nov 29, 2013, 2:02:49 PM11/29/13
to geracaot...@googlegroups.com



create or replace procedure p_insere_dados is

cursor c_insere is
select * from N3_FUNC_INTERM n3
order by n3.cod_func;

AUX_SALARIO_NOVO   N3_FUNC_FINAL.VAL_SAL%TYPE;

aux_insere_dados   c_insere%rowtype;

begin

      for aux_insere_dados in c_insere loop
      
      
          insert into N3_FUNC_FINAL F (F.COD_FUNC,
                                  F.NOM_FUNC,
                                  F.QTD_ANOS_SERV,
                                  F.VAL_SAL)
                               VALUES
                                  (aux_insere_dados.cod_func,
                                   aux_insere_dados.nom_func,
                                   aux_insere_dados.qtd_anos_serv,
                                   aux_insere_dados.val_sal);
      commit;
--SINTAXE DE  CHAMADA DE FUNÇÃO DENTRO DA PROCEDURE
     -- AUX_SALARIO_NOVO := F_REAJUSTA_SALARIO(aux_insere_dados.cod_func);

--SINTAXE DE  CHAMADA DE PROCEDURE DENTRO DA PROCEDURE     
     P_REAJUSTA_SALARIO (aux_insere_dados.cod_func,
                         AUX_SALARIO_NOVO);
      
      UPDATE N3_FUNC_FINAL F SET F.VAL_SAL  = AUX_SALARIO_NOVO
      WHERE F.COD_FUNC = aux_insere_dados.cod_func;
      
      COMMIT;
                                              
      end loop;                                   
     



end p_insere_dados;


create or replace procedure p_reajusta_salario(p_cod_func  in number, p_val_sal out number) is

  AUX_VAL_SAL N3_FUNC_FINAL.VAL_SAL%TYPE;
  AUX_QTD_ANOS  N3_FUNC_FINAL.QTD_ANOS_SERV%TYPE;
  AUX_SALARIO  N3_FUNC_FINAL.VAL_SAL%TYPE; 
   
   
begin

  SELECT F.VAL_SAL, 
         F.QTD_ANOS_SERV
  INTO AUX_VAL_SAL,
       AUX_QTD_ANOS 
  FROM N3_FUNC_FINAL  F
  WHERE COD_FUNC  = P_COD_FUNC;
  
  
       IF  AUX_QTD_ANOS =  1 THEN
           AUX_SALARIO := AUX_VAL_SAL * 1.1;
      ELSIF AUX_QTD_ANOS=  2 THEN
           AUX_SALARIO := AUX_VAL_SAL * 1.2;
      ELSIF  AUX_QTD_ANOS =   3 THEN
           AUX_SALARIO := AUX_VAL_SAL * 1.3;
      ELSIF  AUX_QTD_ANOS=  4 THEN
           AUX_SALARIO := AUX_VAL_SAL * 1.4;
      ELSIF  AUX_QTD_ANOS =  5 THEN
           AUX_SALARIO := AUX_VAL_SAL * 1.5;
      END IF;
      
          
  
   P_VAL_SAL  := AUX_SALARIO;
end; 
______________________________________
Profa: Simone Cristina Aléssio
Administração - Sistemas de Informação
Reply all
Reply to author
Forward
0 new messages