Advertisement
Guest User

Untitled

a guest
May 27th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. Neuen Kunden einfügen / Kundennummer wird automatisch generiert
  3. Quelle: https://stackoverflow.com/a/11296469
  4. */
  5. DECLARE kunde_anrede    VARCHAR(4)   := 'Herr';
  6.         kunde_name      VARCHAR(255) := 'Anton Müller';
  7.         kunde_anschrift VARCHAR(255) := 'Johannes Strasse 85';
  8.         kunde_plz       INTEGER      := '22097';
  9.         kunde_stadt     VARCHAR(255) := 'Berlin';
  10.  
  11. BEGIN
  12.  
  13.     INSERT INTO KUNDEN(KUNDENANREDE, KUNDENNAME, KUNDENANSCHRIFT, KUNDENPLZ, KUNDENSTADT) VALUES (kunde_anrede,kunde_name,kunde_anschrift,kunde_plz,kunde_stadt);
  14.  
  15. END;
  16. /
  17.  
  18.  
  19.  
  20.  
  21. /*
  22.  Pflege Kundendaten Update
  23. */
  24. DECLARE kundenr           INTEGER      := '90050';
  25.         kunde_anschrift_n VARCHAR(255) := 'Johannes Strasse 85';
  26.         kunde_plz_n       INTEGER      := '22097';
  27.         kunde_stadt_n     VARCHAR(255) := 'Berlin';
  28.  
  29. BEGIN
  30.  
  31.     UPDATE KUNDEN SET KUNDENANSCHRIFT=kunde_anschrift_n,KUNDENPLZ=kunde_plz_n,KUNDENSTADT=kunde_stadt_n WHERE KUNDENNR = kundenr;
  32.  
  33. END;
  34. /
  35.  
  36.  
  37.  
  38.  
  39. /*
  40.  Pflege Kundendaten Löschen
  41. */
  42. DECLARE del_kundennummer NUMBER := '90052' ;
  43.  
  44. BEGIN
  45.     DELETE FROM KUNDEN WHERE KUNDENNR = del_kundennummer;
  46.  
  47. END;
  48. /
  49.  
  50.  
  51.  
  52.  
  53. /*
  54.  Produkt anlegen
  55. */
  56. DECLARE produkt_name            VARCHAR(255)    := 'Semesterbeitrag';
  57.         produkt_beschreibung    VARCHAR(512)    := 'Semesterbeitrag für Studierende der Hochschule für angewandte Wissenschaften';
  58.         produkt_typ             VARCHAR(255)    := 'Gebühren';
  59.         produkt_preis           DECIMAL         :=  355.50;
  60.  
  61. BEGIN
  62.  
  63.     INSERT INTO PRODUKTE(PRODUKTNAME,PRODUKTBESCHREIBUNG,PRODUKTTYP,PRODUKTPREIS) VALUES (produkt_name,produkt_beschreibung,produkt_typ,produkt_preis);
  64.  
  65. END;
  66. /
  67.  
  68.  
  69.  
  70. /*
  71.  Pflege Produkt Löschen
  72. */
  73. DECLARE del_produktnummer NUMBER := '5033' ;
  74.  
  75. BEGIN
  76.     DELETE FROM PRODUKTE WHERE PRODUKTNR = del_produktnummer;
  77.  
  78. END;
  79. /
  80.  
  81.  
  82.  
  83. /*
  84.  Pflege Produkt Update
  85. */
  86. DECLARE produkt_nr                INTEGER      := '5033';
  87.         produkt_name             VARCHAR(255) := 'Ein tooles Produkt';
  88.         produkt_beschreibung     VARCHAR(512) := 'Das ist eine BEschreibung';
  89.         produkt_typ              VARCHAR(255) := 'Test';
  90.         produkt_preis            DECIMAL      :=  2500.99;
  91.  
  92. BEGIN
  93.  
  94.     UPDATE PRODUKTE SET PRODUKTNAME=produkt_name,PRODUKTBESCHREIBUNG=produkt_beschreibung,PRODUKTTYP=produkt_typ,PRODUKTPREIS=produkt_preis WHERE PRODUKTNR = produkt_nr;
  95.  
  96. END;
  97. /
  98.  
  99.  
  100.  
  101.  
  102. /*
  103.  Neue Bestellung
  104. */
  105. DECLARE
  106.     Bestellnummer   VARCHAR(100);
  107.     Kundennummer    VARCHAR(100) := '00002';
  108.     artikel_count   VARCHAR(20);
  109.     lager_counter   VARCHAR(20);
  110.     lager_rest      VARCHAR(20);
  111.     check_zubestell VARCHAR(2);
  112.     zubestell_value VARCHAR(20);
  113.  
  114.     TYPE artikel IS RECORD (
  115.         produkt_nr      VARCHAR2(5),
  116.         produkt_anzahl  VARCHAR2(5)
  117.         );
  118.     TYPE artikel_p IS TABLE OF artikel
  119.         INDEX BY BINARY_INTEGER ;
  120.  
  121.     artikelliste artikel_p;
  122. BEGIN
  123.  
  124.     artikelliste(1).produkt_nr      := '1112';
  125.     artikelliste(1).produkt_anzahl  := 1;
  126.     artikelliste(2).produkt_nr      := '2223';
  127.     artikelliste(2).produkt_anzahl  := 2;
  128.     artikelliste(3).produkt_nr      := '3334';
  129.     artikelliste(3).produkt_anzahl  := 3;
  130.     artikelliste(4).produkt_nr      := '4445';
  131.     artikelliste(4).produkt_anzahl  := 4;
  132.     artikelliste(5).produkt_nr      := '5556';
  133.     artikelliste(5).produkt_anzahl  := 5;
  134.  
  135.     artikel_count := artikelliste.COUNT;
  136.  
  137.  
  138.     INSERT INTO BESTELLUNG(KUNDENNR,BEZAHLT,VERSANDBEREIT,VERSENDET) VALUES (Kundennummer,0,0,0);
  139.     SELECT BESTELLNR INTO Bestellnummer FROM BESTELLUNG WHERE BESTELLNR = (SELECT BESTELLNR FROM BESTELLUNG ORDER BY BESTELLNR DESC FETCH FIRST 1 ROWS only);
  140.  
  141.  
  142.     FOR i IN 1..artikel_count LOOP
  143.  
  144.         INSERT INTO BESTELLLISTE(PRODUKTNR, BESTELLNR,STUECKZAHL) VALUES (artikelliste(i).produkt_nr,Bestellnummer,artikelliste(i).produkt_anzahl);
  145.  
  146.         SELECT COALESCE(SUM(STUECKZAHL),0) INTO lager_counter FROM LAGER WHERE PRODUKTNR = artikelliste(i).produkt_nr;
  147.  
  148.         IF lager_counter >= artikelliste(i).produkt_anzahl THEN
  149.  
  150.             UPDATE BESTELLLISTE SET GELIEFERT=artikelliste(i).produkt_anzahl WHERE PRODUKTNR=artikelliste(i).produkt_nr AND BESTELLNR=Bestellnummer;
  151.  
  152.         ELSE
  153.             /* Falls auf Lager ein Teil vorhanden ist dann nur die benötigten Teile bestellen */
  154.             lager_rest := (artikelliste(i).produkt_anzahl - lager_counter);
  155.  
  156.             /* Überprüfen ob eine Zuliefererbestellung bereits erfolgt ist */
  157.             SELECT COUNT(*) INTO check_zubestell FROM ZULIEFERERBESTELLUNG WHERE PRODUKTNR=artikelliste(i).produkt_nr;
  158.  
  159.             /* Alten Wert der Zuliefererbestellung */
  160.             SELECT COALESCE(SUM(STUECKZAHL),0) INTO zubestell_value FROM ZULIEFERERBESTELLUNG WHERE PRODUKTNR=artikelliste(i).produkt_nr;
  161.  
  162.             IF check_zubestell = 1 THEN
  163.                 UPDATE ZULIEFERERBESTELLUNG SET STUECKZAHL = zubestell_value + artikelliste(i).produkt_anzahl WHERE PRODUKTNR=artikelliste(i).produkt_nr;
  164.                 ELSE
  165.                 INSERT INTO ZULIEFERERBESTELLUNG(PRODUKTNR, STUECKZAHL) VALUES (artikelliste(i).produkt_nr,lager_rest);
  166.  
  167.             END IF;
  168.  
  169.         END IF;
  170.  
  171.     END LOOP;
  172.  
  173.  END;
  174. /
  175.  
  176.  
  177.  
  178.  
  179. /*
  180. Bestellung ändern
  181. */
  182. DECLARE
  183.     Bestellnummer   VARCHAR(100) := '2025';
  184.     bestell_count   VARCHAR(20);
  185.  
  186.     TYPE bestell_aendern IS RECORD (
  187.         produkt_nr      VARCHAR2(5),
  188.         produkt_anzahl  VARCHAR2(5)
  189.         );
  190.     TYPE bestell_p IS TABLE OF bestell_aendern
  191.         INDEX BY BINARY_INTEGER ;
  192.  
  193.     teillieferung bestell_p;
  194.  
  195. BEGIN
  196.  
  197.     teillieferung(1).produkt_nr      := '1112';
  198.     teillieferung(1).produkt_anzahl  := 1;
  199.     teillieferung(2).produkt_nr      := '2223';
  200.     teillieferung(2).produkt_anzahl  := 2;
  201.     teillieferung(3).produkt_nr      := '3334';
  202.     teillieferung(3).produkt_anzahl  := 3;
  203.     teillieferung(4).produkt_nr      := '4445';
  204.     teillieferung(4).produkt_anzahl  := 4;
  205.     teillieferung(5).produkt_nr      := '5556';
  206.     teillieferung(5).produkt_anzahl  := 5;
  207.  
  208.     bestell_count := teillieferung.COUNT;
  209.  
  210.     /* Zur einfachere Bearbeitung kompletten Bestellliste der Bestellung droppen*/
  211.     DELETE FROM BESTELLLISTE WHERE BESTELLNR= Bestellnummer;
  212.  
  213.     FOR i IN 1..bestell_count LOOP
  214.  
  215.     INSERT INTO BESTELLLISTE(PRODUKTNR, BESTELLNR, STUECKZAHL) VALUES (teillieferung(i).produkt_nr,Bestellnummer,teillieferung(i).produkt_anzahl);
  216.    
  217.     END LOOP;
  218.  
  219. END;
  220. /
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230. /*
  231.  Teillieferung
  232. */
  233. DECLARE
  234.     Bestellnummer   VARCHAR(100) := '2025';
  235.     lieferung_count   VARCHAR(20);
  236.  
  237.     TYPE lieferung IS RECORD (
  238.         produkt_nr      VARCHAR2(5),
  239.         produkt_anzahl  VARCHAR2(5)
  240.         );
  241.     TYPE lieferung_p IS TABLE OF lieferung
  242.         INDEX BY BINARY_INTEGER ;
  243.  
  244.     teillieferung lieferung_p;
  245.  
  246. BEGIN
  247.  
  248.     teillieferung(1).produkt_nr      := '1112';
  249.     teillieferung(1).produkt_anzahl  := 1;
  250.     teillieferung(2).produkt_nr      := '2223';
  251.     teillieferung(2).produkt_anzahl  := 2;
  252.     teillieferung(3).produkt_nr      := '3334';
  253.     teillieferung(3).produkt_anzahl  := 3;
  254.     teillieferung(4).produkt_nr      := '4445';
  255.     teillieferung(4).produkt_anzahl  := 4;
  256.     teillieferung(5).produkt_nr      := '5556';
  257.     teillieferung(5).produkt_anzahl  := 5;
  258.  
  259.     lieferung_count := teillieferung.COUNT;
  260.  
  261.  
  262.     FOR i IN 1..lieferung_count LOOP
  263.     UPDATE BESTELLLISTE SET GELIEFERT=teillieferung(i).produkt_anzahl WHERE PRODUKTNR=teillieferung(i).produkt_nr AND BESTELLNR=Bestellnummer;
  264.     END LOOP;
  265.  
  266. END;
  267. /
  268.  
  269.  
  270. /*
  271. Zuli
  272.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement