summaryrefslogtreecommitdiffstats
path: root/Bachelor/Datenbanken 2/ORDML.sql
blob: 20a685b093300967d379467f0f85f583c3adbe96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/* Dieses Skript enth�lt alle INSERTS und UPDATES 
   zum Anlegen zweier Kunden und zweier Auftr�ge, 
   die sich gegenseitig referenzieren (Bsp. Kapitel 7).
   Basis hierf�r sind die Types aus dem Skript 
   ORTypes.sql
*/
-- Kunde 1 (ohne Auftragsreferenzen)
INSERT INTO T_Kunde (KNr,Name,Adresse,Telefon,Kontakt)
VALUES (10,'Schmidt',
        Typ_Adresse(64295,'DA','X-Str.','45'),
        Typ_Telefon('111','222',NULL),
        Typ_Kontakt('Kontaktmann 5','Kontaktmann 6')
        ); 
     
-- Kunde 2 (ohne Auftragsreferenzen)   
INSERT INTO T_Kunde (KNr,Name,Adresse,Telefon,Kontakt)
VALUES (20,'Huber',
        Typ_Adresse(60433,'FFM','Y-Str.','56'),
        Typ_Telefon('333','NULL',NULL),
        Typ_Kontakt('Person 1','Person 2','Person 3')
        );

-- Auftrag 1 (ohne Kundenreferenz)
INSERT INTO T_Auftrag (ANr,Eingang,Bearb)
VALUES (101,'24.05.2005','24.05.2005');

-- Auftrag 2 (ohne Kundenreferenz)
INSERT INTO T_Auftrag (ANr,Eingang,Bearb)
VALUES (102,'31.05.2005','31.05.2005');

-- Kundenreferenzen in Auftragsobjekte eintragen
UPDATE T_Auftrag a
SET    a.RefKunde = (SELECT REF(k)
                     FROM   T_Kunde k
                     WHERE  k.KNr = 10)
WHERE  a.Anr = 101;

UPDATE T_Auftrag a
SET    a.RefKunde = (SELECT REF(k)
                     FROM   T_Kunde k
                     WHERE  k.KNr = 20)
WHERE  a.Anr = 102;

-- Tabelle der Auftragsreferenzen in Kundenobjekte eintragen
UPDATE T_Kunde k
SET    k.RefAuftrag = CAST(MULTISET
        (SELECT REF(a)
         FROM T_Auftrag a
         WHERE a.RefKunde.knr = 10) AS Typ_Auftragtab)
WHERE  k.knr = 10; 
         
UPDATE T_Kunde k
SET    k.RefAuftrag = CAST(MULTISET
        (SELECT REF(a)
         FROM T_Auftrag a
         WHERE a.RefKunde.knr = 20) AS Typ_Auftragtab)
WHERE  k.knr = 20;      

-- Verwendung der Methode Last_Bestellung als Spaltenfunktion
select k.KNr, k.Last_Bestellung() 
from T_Kunde k;