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