Databases Reference
In-Depth Information
-- Festlegung der ersten Gruppe, damit zu Anfang ein
-- Gruppenwechsel erfolgt
SET aplz = '00000';
-- Satzweise Verarbeitung der Abfrage
OPEN kliste;
leseschleife: LOOP
FETCH NEXT kliste
INTO kname, kstrasse, kplz, kort, bdatum, bmenge;
IF SQLSTATE=nicht_vorhanden THEN
LEAVE leseschleife
END IF;
-- Gruppenwechsel
IF (kplz <> aplz) OR (kort <> aort) THEN
SET aplz = kplz;
SET aort = kort;
MESSAGE STRING('Kunden aus ', aplz, ' ', aort)
END IF;
MESSAGE STRING('==> ', kname,
' am ', bdatum, ' ', bmenge, ' Stück');
END LOOP leseschleife;
MESSAGE 'FERTIG !';
CLOSE kliste
END;
Daneben können die UPDATE- und die DELETE-Anweisung benutzt werden,
indem in der WHERE-Klausel CURRENT OF cname angegeben wird. Die entspre-
chende Datenänderung bezieht sich dann auf das aktuelle Tupel des Cursors.
In dem folgenden Beispiel wird jedem Artikel ein neues Attribut num zugewiesen,
das den Rang nach der Preishöhe enthält, d.h. der teuerste Artikel bekommt die
Nummer 1, der nächste die Nummer 2 etc. Bei Artikeln mit gleichem Preis ist nach
der Artikelnummer zu sortieren.
-------------------------------------------------------------
-- PROCEDURE Neu_Num
-------------------------------------------------------------
-- Es sollen alle Artikel nach dem Preis absteigend sortiert
-- und in der Reihenfolge nummeriert werden -
-- bei gleichem Preis ist nach der Artikelnummer zu sortieren
-- Dazu ist zuvor eine neue Spalte einzuführen
ALTER TABLE artikel
ADD num INTEGER;
CREATE PROCEDURE neu_num ()
BEGIN
DECLARE lfd_nr INTEGER;
 
Search WWH ::




Custom Search