Kyaria

LANG LEBE EXTRACT

May 2nd, 2018
360
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.66 KB | None | 0 0
  1. --aufgaben pizza no2
  2.  
  3. CREATE OR REPLACE PROCEDURE pppp2(anz_fahrten OUT NUMBER, anz_km_mon OUT NUMBER, anz_km_yea OUT NUMBER, kfz IN VARCHAR2, datum IN DATE) AS
  4.  
  5. fahrten NUMBER := 0;
  6. kilometer_1 NUMBER := 0;
  7. kilometer_2 NUMBER := 0;
  8.  
  9. CURSOR c1 IS SELECT SUM(LIEF.tacho_ab) a_b, SUM(LIEF.tacho_bis) a_a, LIEF.KFZNR, COUNT(LIEF.KFZNR) anz_fahrt FROM LIEF, FAHRZEUG WHERE LIEF.KFZNR = FAHRZEUG.FNR AND EXTRACT(MONTH FROM LIEF.LIEFDAT) = EXTRACT(MONTH FROM datum) GROUP BY LIEF.KFZNR;
  10. CURSOR c2 IS SELECT SUM(LIEF.tacho_ab) c_b, SUM(LIEF.tacho_bis) c_a FROM LIEF, FAHRZEUG WHERE LIEF.KFZNR = FAHRZEUG.FNR AND EXTRACT(YEAR FROM LIEF.LIEFDAT) = EXTRACT(YEAR FROM datum);
  11. ca c1%ROWTYPE;
  12. cb c2%ROWTYPE;
  13.  
  14. BEGIN
  15. OPEN c1;
  16. OPEN c2;
  17. FETCH c1 INTO ca;
  18. FETCH c2 INTO cb;
  19.  
  20. fahrten := ca.anz_fahrt;
  21. kilometer_1 := (ca.a_a - ca.a_b);
  22. kilometer_2 := (cb.c_a - cb.c_b);
  23.  
  24. INSERT INTO FAHRZEUG_STAT VALUES(ca.KFZNR, EXTRACT(YEAR FROM datum), EXTRACT(MONTH FROM datum), ca.anz_fahrt, kilometer_1, kilometer_2, t1.NEXTVAL );
  25.  
  26. anz_fahrten := fahrten;
  27. anz_km_mon := kilometer_1;
  28. anz_km_yea := kilometer_2;
  29.  
  30. CLOSE c2;
  31. CLOSE c1;
  32. END;
  33.  
  34.  
  35. DECLARE
  36. datum DATE := TO_DATE('11-2015', 'MM-YYYY');
  37. kfz NUMBER := 1;
  38. km_mon NUMBER := 0;
  39. km_yea NUMBER := 0;
  40. anz_fahrten NUMBER := 0;
  41. BEGIN
  42.     pppp2(anz_fahrten, km_mon, km_yea, kfz, datum);
  43.     DBMS_OUTPUT.put_line(anz_fahrten || ', ' || km_mon || ', ' || km_yea);
  44. END;
  45.  
  46. CREATE TABLE FAHRZEUG_STAT(
  47. fahrzeug_id NUMBER(30) NOT NULL,
  48. jahr NUMBER(30),
  49. monat NUMBER(30),
  50. lieferungen NUMBER(30),
  51. km_monat NUMBER(30),
  52. km_jahr NUMBER(30),
  53.  
  54. CONSTRAINT pk_1 PRIMARY KEY(fahrzeug_id)
  55. );
  56.  
  57. CREATE sequence t1
  58. START WITH 1
  59. increment BY 1;
Advertisement