Databases Reference
In-Depth Information
Dieser Aufruf führt also zuerst die notwendigen Kontrollen durch (gibt es über-
haupt einen entsprechenden Satz in der Positionstabelle?). Anschließend erledigt
der Aufruf (auf dem Server!) alle notwendigen Datenänderungen, die eine Auslie-
ferung nach sich ziehen, nämlich die Eintragung der gelieferten Menge in der Posi-
tionsdatei und gegebenenfalls die Neuberechnung des Gesamtpreises propor-
tional zur bestellten Menge sowie die Abbuchung in der Artikel-Tabelle.
Das Verfahren ist DV-mäßig jetzt so sicher, dass jederzeit aus der Datenbank der
aktuelle Lagerbestand ermittelt werden kann. Da aber im Unternehmen Menschen
arbeiten und nicht nur Computer und Roboter, stellt sich spätestens bei der Inven-
tur heraus, dass es doch Abweichungen gibt. Diese müssen dann als Bestandskor-
rektur in die Datenbank eingegeben werden. Damit aber diese Funktion nicht als
einfache Möglichkeit benutzt werden kann, Schwund zu erzeugen und anschlie-
ßend problemlos abzubuchen, sollte zum einen die Berechtigung für die Benut-
zung dieser Prozedur auf einen kleinen Personenkreis eingeschränkt werden. Zum
anderen wird grundsätzlich eine Protokolldatei geführt, die den Aufruf dieser Pro-
zedur mit Angabe des Benutzers und des Zeitpunkts des Aufrufs protokolliert.
-- Prozedur, die eine Bestandskorrektur vornimmt.
-- Die Bestandskorrektur wird in der Tabelle Protokoll protokolliert.
-- Argumente:
-- IN artikel: Artikel_Nr des zu korrigierenden Artikels
-- IN neubestand: zu setzender Bestand
CREATE PROCEDURE bestandskorrektur(
IN art_nr CHAR(4),
IN neubestand INTEGER)
-- SQL/PSM: MODIFIES SQL-DATA
BEGIN ATOMIC
DECLARE nicht_vorhanden
EXCEPTION FOR SQLSTATE VALUE '02000';
DECLARE altbestand INTEGER;
SELECT bestand INTO altbestand
FROM artikel
WHERE artikel_nr=art_nr;
IF SQLSTATE <> nicht_vorhanden THEN
UPDATE artikel
SET bestand = neubestand
WHERE artikel_nr = art_nr;
INSERT INTO protokoll(artikel_nr,bestand_alt,bestand_neu)
VALUES(art_nr,altbestand,neubestand)
END IF
END;
Ein Aufruf könnte wie folgt aussehen:
CALL bestandskorrektur ('G002', 468);
Search WWH ::




Custom Search