Advertisement
moreiramota

Untitled

Dec 2nd, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. SET SERVEROUTPUT ON;
  2. CREATE OR REPLACE PROCEDURE proc_faturas_nao_liquidadas(data_inicio IN OUT fatura.data_emissao%TYPE, data_fim IN OUT fatura.data_emissao%TYPE)
  3. Is
  4. data_inicio_valor fatura.data_emissao%TYPE;
  5. data_fim_valor fatura.data_emissao%TYPE;
  6. valor_total Integer :=0;
  7. valor_intermedio Integer;
  8. cliente_valor cliente%ROWTYPE;
  9. id_cliente_valor Integer;
  10. Cursor cliente_cursor is
  11. Select c.cod_cliente from Cliente c;
  12. Begin
  13. If(data_inicio Is Null) Then
  14. Select Min(data_emissao) into data_inicio_valor from Fatura;
  15. data_fim_valor:=data_fim;
  16. End if;
  17. If(data_fim Is Null) Then
  18. Select Max(data_emissao) into data_fim_valor from Fatura;
  19. data_inicio_valor:=data_inicio;
  20. End if;
  21. If(data_fim Is Null And data_inicio Is Null) Then
  22. Select Max(data_emissao) into data_fim_valor from Fatura;
  23. Select Min(data_emissao) into data_inicio_valor from Fatura;
  24. End if;
  25. End if;
  26. If(data_fim Is Not Null And data_inicio Is Not Null) Then
  27. data_inicio_valor:=data_inicio;
  28. data_fim_valor:=data_fim;
  29. End if;
  30. Open cliente_cursor;
  31. Loop
  32. Fetch cliente_cursor into cliente_valor;
  33. Select cod_cliente from Fatura f where lower(f.estado) like 'nao liquidada' and f.data_emissao between data_inicio_valor and data_fim_valor;
  34.  
  35. valor_intermedio:=0;
  36. Select SUM(fa.iva*fa.valor_base-fa.desconto) into valor_intermedio from fatura_artigo fa inner Join Fatura f on fa.num_fatura=f.num_fatura WHERE
  37. lower(estado) LIKE ( 'nao liquidada' )
  38. AND f.cod_cliente = cliente_valor.cod_cliente
  39. AND f.data_emissao BETWEEN data_fim_valor AND data_fim_valor
  40. ORDER BY
  41. f.data_emissao;
  42. dbms_output.put_line('Cliente:' || cliente_valor.cod_cliente);
  43. dbms_output.put_line('Valor:' || valor_intermedio);
  44. valor_total:=valor_total + valor_intermedio;
  45. End Loop;
  46. Close cliente_cursor;
  47.  
  48. dbms_output.put_line('Valor total por liquidar :' || valor_total);
  49. End;
  50. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement