Databases Reference
In-Depth Information
Das Verhalten eines Datentyps wird durch Methoden (Funktionen oder Proze-
duren) bestimmt.
Die Komponenten (Attribute und Methoden) sind gekapselt. Der Zugriff erfolgt
über systemgenerierte Funktionen (»get and set functions« [EiMe99, S. 131]).
Um Instanzen eines Typs zu erzeugen, muss der systemgenerierte Konstruktor
benutzt werden. Der Konstruktor hat denselben Namen wie der Typ.
Wertvergleiche und eine Sortierung der Exemplare eines Typs erfolgen anhand
benutzerdefinierter Funktionen für Vergleiche und Sortierung.
Ty p e n k önnen hierarchisch aufgebaut sein. Alle Subtypen erben die Attribute
und Methoden der Supertypen und können diese umbenennen, umdefinieren
und durch eigene Komponenten erweitern. Es ist keine Mehrfach-Vererbung
vorgesehen. Ein Subtyp kann in der Regel dort verwendet werden, wo sein
Supertyp erwartet wird.
Die SQL-Anweisung zum Anlegen eines abstrakten Datentyps lautet in verein-
fachter Form:
CREATE value_or_object TYPE typname
[UNDER supertyp]
[AS (attributliste)]
[methodendeklarationsliste]
value_oder_objekt ::= VALUE | OBJECT
Durch VALUE bzw. OBJECT wird festgelegt, ob der Typ instanziierbar ist, d.h. ob auf
seiner Basis Objekttabellen erzeugt werden können. Ansonsten ist nur die Verwen-
dung als Datentyp von Attributen möglich. Wenn ein Supertyp angegeben ist, erbt
der aktuelle Datentyp dessen Attribute und Methoden. Zu jedem Element der
Attributliste wird Name und Datentyp angegeben. Der Datentyp eines Attributs
kann selbst wieder ein nutzerdefinierter Datentyp sein. Die Methodendeklaration
enthält nur die Signatur, d.h. den Namen der Methode, die Eingabeparameter und
den Datentyp des Rückgabewerts. Ein kleines Beispiel 8 möge zunächst die Syntax
erläutern. In Abschnitt 9.3 stellen wir ein ausführlicheres Beispiel vor, das dort
allerdings vom Standard abweicht, da wir es unter Oracle9 erstellt haben.
CREATE OBJECT TYPE otyp_angestellter
UNDER otyp_person
AS (
angest_nr INTEGER,
gehalt DECIMAL(7,2)),
INSTANCE METHOD gehaltserhoehung (
abs_oder_prozent BOOLEAN,
betrag DECIMAL (7,2)
RETURNS DECIMAL (7,2);
8
Angelehnt an [EiMe99, S. 134].
 
Search WWH ::




Custom Search