Sie sind auf Seite 1von 3

DB-Proceduren zu Lagerverwaltung

1 von 3

file:///D:/_dbi/PLSQL/lager.html

DB-Proceduren zu Lagerverwaltung

Datenmodell anzeigen/ausblenden
Alle Fragen anzeigen, Alle Daten anzeigen, Alle SQL anzeigen, Alles weg
Lager 1 Create Tables Daten SQL
Erstelle zu obigem Datenmodell die Create Tables incl. Constraints.
Gib auch die Drop Tables in geeigneter Reihenfolge an.
Lager 2 Inserts Daten SQL
Erstelle Testdaten fr obige Tabellen
Mindestens 3 Artikel
5 Lager
15 Lieferungen zu unterschiedlichen Lagern und Artikel
5 Preise pro Artikel
Insert into ARTIKEL (ANR,BEZEICHNUNG) values (1,'Apfel');
Insert into ARTIKEL (ANR,BEZEICHNUNG) values (2,'Birne');
Insert into ARTIKEL (ANR,BEZEICHNUNG) values (3,'Banane');
Insert
Insert
Insert
Insert
Insert

into
into
into
into
into

LAGER
LAGER
LAGER
LAGER
LAGER

(LNR,ORT,STUECKKAP)
(LNR,ORT,STUECKKAP)
(LNR,ORT,STUECKKAP)
(LNR,ORT,STUECKKAP)
(LNR,ORT,STUECKKAP)

values
values
values
values
values

(11,'Probstdorf',40);
(12,'Wolkersdorf',30);
(13,'Vsendorf',60);
(14,'Neusiedl am See',80);
(15,'Brunn am Gebirge',100);

alter session set nls_date_format='RRRR.MM.DD';


Insert
Insert
Insert
Insert
Insert
Insert

into
into
into
into
into
into

LIEFERUNG
LIEFERUNG
LIEFERUNG
LIEFERUNG
LIEFERUNG
LIEFERUNG

(
(
(
(
(
(

LNR,
LNR,
LNR,
LNR,
LNR,
LNR,

LFNDNR,
LFNDNR,
LFNDNR,
LFNDNR,
LFNDNR,
LFNDNR,

DATUM,
DATUM,
DATUM,
DATUM,
DATUM,
DATUM,

STUECK,
STUECK,
STUECK,
STUECK,
STUECK,
STUECK,

ANR)
ANR)
ANR)
ANR)
ANR)
ANR)

values
values
values
values
values
values

(11,1,'2014-03-01',
(11,2,'2014-03-02',
(11,3,'2014-03-03',
(11,4,'2014-03-04',
(11,5,'2014-03-05',
(11,6,'2014-03-06',

10, 1);
20, 1);
40, 1);
-40, 1);
-40, 1);
10, 1);

Insert
Insert
Insert
Insert
Insert
Insert

into
into
into
into
into
into

LIEFERUNG
LIEFERUNG
LIEFERUNG
LIEFERUNG
LIEFERUNG
LIEFERUNG

(
(
(
(
(
(

LNR,
LNR,
LNR,
LNR,
LNR,
LNR,

LFNDNR,
LFNDNR,
LFNDNR,
LFNDNR,
LFNDNR,
LFNDNR,

DATUM,
DATUM,
DATUM,
DATUM,
DATUM,
DATUM,

STUECK,
STUECK,
STUECK,
STUECK,
STUECK,
STUECK,

ANR)
ANR)
ANR)
ANR)
ANR)
ANR)

values
values
values
values
values
values

(12,1,'2014-03-01',
(12,2,'2014-03-02',
(12,3,'2014-03-03',
(12,4,'2014-03-04',
(12,5,'2014-03-05',
(12,6,'2014-03-06',

10, 1);
20, 1);
10, 1);
-40, 1);
40, 1);
-10, 1);

Insert
Insert
Insert
Insert
Insert
Insert

into
into
into
into
into
into

LIEFERUNG
LIEFERUNG
LIEFERUNG
LIEFERUNG
LIEFERUNG
LIEFERUNG

(
(
(
(
(
(

LNR,
LNR,
LNR,
LNR,
LNR,
LNR,

LFNDNR,
LFNDNR,
LFNDNR,
LFNDNR,
LFNDNR,
LFNDNR,

DATUM,
DATUM,
DATUM,
DATUM,
DATUM,
DATUM,

STUECK,
STUECK,
STUECK,
STUECK,
STUECK,
STUECK,

ANR)
ANR)
ANR)
ANR)
ANR)
ANR)

values
values
values
values
values
values

(13,1,'2014-03-01',
(13,2,'2014-03-02',
(13,3,'2014-03-03',
(13,4,'2014-03-04',
(13,5,'2014-03-05',
(13,6,'2014-03-06',

10, 1);
20, 1);
10, 1);
-40, 1);
40, 1);
20, 1);

alter session set nls_date_format='RRRR.MM.DD'; -- Einstellung Datumsformat Fr Oracle


Insert into Preise (ANR, GUELTIG_AB, GUELTIG_BIS, PREIS) VALUES (1, '2014-01-01','2014-01-31',2);
Insert into Preise (ANR, GUELTIG_AB, GUELTIG_BIS, PREIS) VALUES (1, '2014-02-01','2014-02-28',2.1);
Insert into Preise (ANR, GUELTIG_AB, GUELTIG_BIS, PREIS) VALUES (1, '2014-03-01','2014-03-31',2.2);

19.11.2015 14:52

DB-Proceduren zu Lagerverwaltung

2 von 3

file:///D:/_dbi/PLSQL/lager.html

Insert into Preise (ANR, GUELTIG_AB, GUELTIG_BIS, PREIS) VALUES (1, '2014-04-01','2014-04-30',2.1);
Insert into Preise (ANR, GUELTIG_AB, GUELTIG_BIS, PREIS) VALUES (1, '2014-05-01','2014-05-31',2.3);
Insert into Preise (ANR, GUELTIG_AB, GUELTIG_BIS, PREIS) VALUES (1, '2014-12-01',null,3);
Insert
Insert
Insert
Insert
Insert
Insert

into
into
into
into
into
into

Preise
Preise
Preise
Preise
Preise
Preise

(ANR,
(ANR,
(ANR,
(ANR,
(ANR,
(ANR,

GUELTIG_AB,
GUELTIG_AB,
GUELTIG_AB,
GUELTIG_AB,
GUELTIG_AB,
GUELTIG_AB,

GUELTIG_BIS,
GUELTIG_BIS,
GUELTIG_BIS,
GUELTIG_BIS,
GUELTIG_BIS,
GUELTIG_BIS,

PREIS)
PREIS)
PREIS)
PREIS)
PREIS)
PREIS)

VALUES
VALUES
VALUES
VALUES
VALUES
VALUES

(2,
(2,
(2,
(2,
(2,
(2,

'2014-01-01','2014-01-31',3);
'2014-02-01','2014-02-28',3.1);
'2014-03-01','2014-03-31',3.2);
'2014-04-01','2014-04-30',3.1);
'2014-05-01','2014-05-31',3.3);
'2014-12-01',null,4);

Insert
Insert
Insert
Insert
Insert
Insert

into
into
into
into
into
into

Preise
Preise
Preise
Preise
Preise
Preise

(ANR,
(ANR,
(ANR,
(ANR,
(ANR,
(ANR,

GUELTIG_AB,
GUELTIG_AB,
GUELTIG_AB,
GUELTIG_AB,
GUELTIG_AB,
GUELTIG_AB,

GUELTIG_BIS,
GUELTIG_BIS,
GUELTIG_BIS,
GUELTIG_BIS,
GUELTIG_BIS,
GUELTIG_BIS,

PREIS)
PREIS)
PREIS)
PREIS)
PREIS)
PREIS)

VALUES
VALUES
VALUES
VALUES
VALUES
VALUES

(3,
(3,
(3,
(3,
(3,
(3,

'2014-01-01','2014-01-31',4);
'2014-02-01','2014-02-28',4.1);
'2014-03-01','2014-03-31',4.2);
'2014-04-01','2014-04-30',4.1);
'2014-05-01','2014-05-31',4.3);
'2014-12-01',null,5);

VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES

(1,
(1,
(1,
(1,
(1,
(1,
(1,
(1,
(1,

'2014-01-02','2013-01-31',91);
'2014-01-03','2014-01-31',92);
'2013-01-04','2014-01-01',93);
'2016-01-01',null,94);
'2013-01-01','2015-01-01',95);
'2017-01-01','2017-02-01',96);
'2013-01-03','2014-10-01',97);
'2014-11-01','2014-11-11',98);
'2014-11-02','2014-11-11',99);

-- BAD - Preise mit schlechten Gltigkeitszeitraum


Insert
Insert
Insert
Insert
Insert
Insert
Insert
Insert
Insert

into
into
into
into
into
into
into
into
into

Preise
Preise
Preise
Preise
Preise
Preise
Preise
Preise
Preise

(ANR,
(ANR,
(ANR,
(ANR,
(ANR,
(ANR,
(ANR,
(ANR,
(ANR,

GUELTIG_AB,
GUELTIG_AB,
GUELTIG_AB,
GUELTIG_AB,
GUELTIG_AB,
GUELTIG_AB,
GUELTIG_AB,
GUELTIG_AB,
GUELTIG_AB,

GUELTIG_BIS,
GUELTIG_BIS,
GUELTIG_BIS,
GUELTIG_BIS,
GUELTIG_BIS,
GUELTIG_BIS,
GUELTIG_BIS,
GUELTIG_BIS,
GUELTIG_BIS,

PREIS)
PREIS)
PREIS)
PREIS)
PREIS)
PREIS)
PREIS)
PREIS)
PREIS)

Lager 3 Preise erhhen Daten SQL


Erhhe alle Preise ab 1.1.2015 um 5 Prozent
HINWEIS: mit einem einzigen SQL-Statement lsbar
Lager 4 lschen Daten SQL
Lsche das Lager mit der kleinsten ID
HINWEIS: mit zwei SQL-Statements lsbar
Lager 5.a: Lagerstand Daten SQL
Schreibe ein SELECT das zu jedem Lager die aktuelle Stckanzahl angibt.
AUSGABE: Lagernummer sortiert, aktuelle Stckanzahl
(Die Einzelbuchungen stehen in Tabelle Lieferung)
Lager 5.b: Lagerungsverlauf Daten oraSQL mySQL
Prfe jede Lagerstelle ob sie jemals ber die Kapazittsgrenze gefllt wurde,
oder auch einmal ein negativer Lagerstand aufgetreten ist.
Gib in beiden Fehlerfllen eine brauchbare Fehlermeldung aus.
HINWEIS: Block mit 2 verschachtelten Cursor-Schleifen
Lager 5 Procedure Anlieferung Daten oraSQL mySQL
erstelle eine Procedure Anlieferung mit den Parametern
(P_Artikelbzeichnung VARCHAR, P_Datum date, P_Stueck INT)
Die Procedure mu fr die richtige Artikelnummer,
Lagerstellen mit verfgbaren Platz suchen und die entsprechende Stckanzahl
in alle ntigen Lagerpltze verbuchen.
Die Belegung eines Lagers ist durch Summieren von Lieferung zu ermitteln.
Bsp.: Es sind 160 pfel einzulagern. Dazu sind 5 Lager mit 50 Pltzen vorhanden.
Im Lager 1 sind bereits 20 Pltze belegt.
Vor Einlagern der 160 pfel
LNR Belegt Kapazitt
1
20
50
2
0
50
3
0
50
4
0
50
Nach Einlagern der 160 pfel
LNR Belegt Kapazitt
1
50
50
2
50
50
3
50
50
4
30
50

19.11.2015 14:52

DB-Proceduren zu Lagerverwaltung

3 von 3

file:///D:/_dbi/PLSQL/lager.html

Lager 6: Aktuelle Summe in Lager Daten oraSQL mySQL


Ergnze die Tabelle Lager um das Feld aktuelle_menge ohne diese zu dropen.
Erstelle einen Trigger der bei einem Insert in der Tabelle Lieferung,
das Feld aktuelle_menge in der Tabelle Lager pflegt.
ZUSATZ: bercksichtige auch Update und Delete.
Lager 7 Check Lager Daten oraSQL mySQL
Verhindere in der Tabelle Lager eine aktuelle_menge unter 0.
Weiters darf die aktuelle_menge nicht ber stueckkap steigen.
Im Fehlerfall mu eine Fehlermeldung ber das Problem Auskunft geben.
Lager 8 Preis gltig check Daten oraSQL mySQL
In der Tabelle Preis gibt es ein gueltig_ab und gueltig_bis Datum.
Mit deren Hilfe wird der Gltigkeitszeitraum gebildet.
Fr jeden Zeitpunkt darf es nur einen gltigen Preis geben.
Eine berlappung der Gltigkeitszeitrume mu verhindert werden.
Lse dies mithilfe von Trigger.
Lager 9 Procedure Artikel entnehmen Daten oraSQL mySQL
Von einem Artikel soll eine gewisse Anzahl aus den Lagern entnommen werden.
Dabei werden die Lager nach dem Artikel durchsucht.
Wenn ein Lager weniger Stck als gesucht enthlt, wird der Eintrag gelscht
und die gesuchte Anzahl entsprechend reduziert und nach weiteren Eintrgen gesucht.
Enthlt ein Lager mehr Stck als gesucht, wird der Lagerstand entsprechend reduziert.
ZUSATZ: sind nicht genug Stck lagernd - Fehlermeldung ausgeben
Lager 10 Procedure Lager auflsen/umbuchen Daten oraSQL mySQL
Ein Lager mit vorgebener ID soll aufgelst werden.
All seine darin enthaltenen Artikel sind anderen Lagerstellen zuzuordnen.
Lager X Daten oraSQL mySQL

19.11.2015 14:52