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;
|