Advertisement
moreiramota

Untitled

Dec 2nd, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.31 KB | None | 0 0
  1. --Alinea 2
  2. SET SERVEROUTPUT ON;
  3. create or replace function func_razao_veiculo_transporte(id INTEGER , dataInicio Viagem.data_partida%TYPE, dataFim Viagem.data_partida%TYPE)
  4. return Number Is
  5. razao int;
  6. ma int;
  7. mi int;
  8. Begin
  9. Select Count (Distinct(v.matricula_veiculo))into mi
  10. From armazem a
  11. Inner Join viagem v on a.cod_armazem=v.cod_armazem
  12. Inner Join Nota_Encomenda ne on ne.id_nota_encomenda=v.id_nota_encomenda
  13. where v.data_partida between dataInicio and dataFim and a.cod_armazem = id
  14. 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));
  15. Select Count (Distinct(v.matricula_veiculo)) into ma
  16. From armazem a
  17. Inner Join viagem v on a.cod_armazem=v.cod_armazem
  18. Inner Join Nota_Encomenda ne on ne.id_nota_encomenda=v.id_nota_encomenda
  19. where v.data_partida between dataInicio and dataFim and a.cod_armazem = id
  20. 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));
  21. if(mi<=0 or ma<=0) then
  22. dbms_output.put_line('dados insuficentes');
  23. return null;
  24. end if;
  25. razao:=ma/mi;
  26. return razao;
  27. Exception
  28. when NO_DATA_FOUND then
  29. return null;
  30.  
  31. end;
  32. /
  33. -- test true
  34. Declare
  35. result Integer;
  36. begin
  37. result := func_razao_veiculo_transporte(1,'2017/02/01 09:45:34','2018/08/01 09:45:34');
  38. if result is not null then
  39. dbms_output.put_line('quantidade ='|| result);
  40. else
  41. dbms_output.put_line('invalido');
  42. end if;
  43. END;
  44. /
  45.  
  46. -- test false
  47. Declare
  48. result Integer;
  49. begin
  50. result := func_razao_veiculo_transporte(22,'2017/02/01 09:45:34','2018/08/01 09:45:34');
  51. if result is not null then
  52. dbms_output.put_line('quantidade ='|| result);
  53. else
  54. dbms_output.put_line('invalido');
  55. end if;
  56. END;
  57. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement