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