Nos postes anteriores, acho que não consegui expressar o que preciso desenvolver. Vou explicar de uma forma simples, resumindo o que estou desenvolvendo, pois de repente alguém possa me ajudar na minha dúvida.
Atualmente estou desenvolvendo em pl-sql, algumas procedures, e todas com entrada e saidas com Types, e não conheço bem.
A PROCEDURE proc_motor e funções , esta no exemplo abaixo,
A PROCEDURE proc_motor é uma proc de cálculos.
Vou desenvolver uma segunda procedure, chamando a proc_motor (cálculos), e quero saber como faço para fazer a chamada desta proc_motor, pois a mesma terá que fazer cálculos automáticos. Tipo, usuário digita e a procedure calcula, e depois inserir estes cálculos em uma tabela. . Alguém pode me dar uma luz?
Exemplo das funcionalidades abaixo: Funções, types e procedures passo a passo, como fiz.
--IR
create or replace function fn_ir (p_IR number default 0,
p_IMPOSTO number default 0 ) return number is
v_ir number;
begin
v_ir := p_IR + p_IMPOSTO;
dbms_output.put_line ( 'Resultado: '||v_ir);
return v_ir;
end;
create or replace function fn_iss (p_ISS number default 0,
p_COFINS number default 0 ) return number is
v_iss number;
begin
v_iss := p_ISS + p_COFINS;
dbms_output.put_line ( 'Resultado: '||v_iss );
return v_iss;
end;
create or replace function fn_taxa (p_TAXA number default 0,
p_IMPOSTO number default 0,
p_ISS number default 0) return number is
v_taxa number;
begin
v_taxa := p_TAXA * p_IMPOSTO + p_ISS;
dbms_output.put_line ( 'Resultado: '||v_taxa);
return v_taxa;
end;
--- Criei estas types ---
create or replace TYPE t_calxulo AS OBJECT
(p_ISS number,
p_COFINS number,
P_IR number,
P_IMPOSTO number,
P_TAXA number
);
create or replace TYPE to_calxulo AS OBJECT
(ISS number,
COFINS number,
IR number,
IMPOSTO number,
TAXA number
);
create or replace type calculo_tab
as table of t_calxulo
create or replace PROCEDURE proc_motor ( calculo_tab in t_calxulo )
AS
--Retorno (Saida Funções Calculadas)
v_num1 NUMBER := 0;
v_num2 NUMBER := 0;
v_num3 NUMBER := 0;
-- type que receberá o retorno (Saida Funções Calculadas)
type tret_motor is record ( v_num1 number,
v_num2 number,
v_num3 number);
vretorno tret_motor;
-- função que retorna os valores (Saida Funções Calculadas)
function fun_ret_motor
return tret_motor
is
vret_motor tret_motor;
begin
--Retorno das funções-----------
--FUNCTION 1
v_num1 := fn_ISS( calculo_tab.p_iss , calculo_tab.p_COFINS );
--FUNCTION 2
v_num2 := fn_ir( calculo_tab.P_IR, calculo_tab.P_IMPOSTO);
--FUNCTION 3
v_num3 := fn_taxa( calculo_tab.P_TAXA, calculo_tab.P_IMPOSTO, calculo_tab.p_ISS );
--Agora alimentamos o v_row a ser retornado
vret_motor.v_num1 := v_num1;
vret_motor.v_num2 := v_num2;
vret_motor.v_num3 := v_num3;
--
return vret_motor;
end fun_ret_motor;
begin
-- Chamada da função
vretorno := fun_ret_motor;
-- Print dos dadosfun_ret_motor;
dbms_output.put_line('FUNCTION 1: '||vretorno.v_num1);
dbms_output.put_line('FUNCTION 2: '||vretorno.v_num2);
dbms_output.put_line('FUNCTION 3: '||vretorno.v_num3);
end;
obrigada
Kátia