› Fóruns › SQL e PL/SQL › Inserir com procedure › Inserir com procedure
eu alteraria o procedimento pra:
Create or replace procedure ins_funcionario(
v_nome in funcionario.nome%type,
v_end in funcionario.ende%type,
v_tel in funcionario.tel%type,
v_cargo in funcionario.cargo%type,
v_salario in funcionario.salario%type,
v_chefe in funcionario.chefe%type := NULL,
v_codigo_depto in funcionario.codigo_depto%type := NULL
)
Is
cursor c_retorna_depto_chefe(p_chefe in funcionario.chefe%type) is
select codigo_depto from funcionario where codigo = p_chefe;
v_data funcionario.data_cont%type;
v_codigo_depto_1 funcionario.codigo_depto%type;
Begin
v_data := sysdate;
if (v_chefe is null) then
v_codigo_depto_1 := v_codigo_depto;
else
open c_retorna_depto_chefe(v_chefe);
fetch c_retorna_depto_chefe into v_codigo_depto_1;
close c_retorna_depto_chefe;
end if;
Insert into funcionario(codigo, nome, ende, tel, data_cont, cargo, salario, chefe, codigo_depto)
Values(seq_funcionario.nextval, v_nome, v_end, v_tel, v_data, v_cargo, v_salario, v_chefe, v_codigo_depto_1);
Commit;
End;
Onde informa-se o codigo do depto apenas nos casos em que é inserção de cadastro de chefe (onde o funcionario nao possui chefe) e quando o funcionario possui chefe, ele pega o departamento do chefe e insere coloca no depto do funcionario…