Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Alinea 2
- SET SERVEROUTPUT ON;
- create or replace function func_razao_veiculo_transporte(id INTEGER , dataInicio Viagem.data_partida%TYPE, dataFim Viagem.data_partida%TYPE)
- return Number Is
- razao int;
- ma int;
- mi int;
- Begin
- Select Count (Distinct(v.matricula_veiculo))into mi
- From armazem a
- Inner Join viagem v on a.cod_armazem=v.cod_armazem
- Inner Join Nota_Encomenda ne on ne.id_nota_encomenda=v.id_nota_encomenda
- where v.data_partida between dataInicio and dataFim and a.cod_armazem = id
- Having Count (*) = (Select min(Count(*)) From nota_encomenda ne Inner Join Guia_Transporte gt on gt.id_nota_encomenda = ne.id_nota_encomenda group by (ne.id_nota_encomenda , gt.id_nota_encomenda));
- Select Count (Distinct(v.matricula_veiculo)) into ma
- From armazem a
- Inner Join viagem v on a.cod_armazem=v.cod_armazem
- Inner Join Nota_Encomenda ne on ne.id_nota_encomenda=v.id_nota_encomenda
- where v.data_partida between dataInicio and dataFim and a.cod_armazem = id
- Having Count (*) = (Select max(Count(*)) From nota_encomenda ne Inner Join Guia_Transporte gt on gt.id_nota_encomenda = ne.id_nota_encomenda group by (ne.id_nota_encomenda , gt.id_nota_encomenda));
- if(mi<=0 or ma<=0) then
- dbms_output.put_line('dados insuficentes');
- return null;
- end if;
- razao:=ma/mi;
- return razao;
- Exception
- when NO_DATA_FOUND then
- return null;
- end;
- /
- -- test true
- Declare
- result Integer;
- begin
- result := func_razao_veiculo_transporte(1,'2017/02/01 09:45:34','2018/08/01 09:45:34');
- if result is not null then
- dbms_output.put_line('quantidade ='|| result);
- else
- dbms_output.put_line('invalido');
- end if;
- END;
- /
- -- test false
- Declare
- result Integer;
- begin
- result := func_razao_veiculo_transporte(22,'2017/02/01 09:45:34','2018/08/01 09:45:34');
- if result is not null then
- dbms_output.put_line('quantidade ='|| result);
- else
- dbms_output.put_line('invalido');
- end if;
- END;
- /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement