Home ORDIX AG             Dienstleistung             Trainingsshop    Kunden / Referenzen Aktuelles    Kontakt
Home  Pfeil  ORDIX News  Pfeil  2/2009  Pfeil  Datenbanken
suche: 
Dieser Artikel richtet sich an Datenbankadministratoren und Entwickler, die einen Überblick über die Objekttypen von Oracle bekommen möchten.


Reihe Oracle Objekttypen von A - Z (Teil X)

TYPE, TYPE BODY, UNDEFINED, VIEW

CREATE OR REPLACE TYPE abteilung AS OBJECT(
abteilungsnr    NUMBER(5),
Abteilungsname  VARCHAR2(30)
);
Abb. 1: Record-Deklaration als TYPE.
CREATE OR REPLACE TYPE abteilung_obj AS OBJECT
(ABTEILUNGSNR NUMBER(3),
ABTEILUNGSNAME VARCHAR2(20),
ABTEILUNGSLEITER VARCHAR2(20),
MEMBER FUNCTION fct_abtinfo RETURN VARCHAR2);
Abb. 2: Objektspezifikation mit Variablen und Methoden.
CREATE OR REPLACE TYPE BODY abteilung_obj AS
MEMBER FUNCTION fct_abtinfo RETURN VARCHAR2
IS 
	BEGIN 
		RETURN 'Abteilung: ' || ABTEILUNGSNAME || '
Leiter der Abteilung: ' || ABTEILUNGSLEITER;

	END;
END;
	
Abb. 3: Spezifikation der Methoden des Objektes.
CREATE TABLE Abteilung OF abteilung_obj;
	
Abb. 4: Erstellung eines Datenbankobjektes.
INSERT INTO abteilung VALUES(abteilung_
obj(123,'Marketing','Meier'));
	
Abb. 5: Konstruktormethode des Objektes.
select abt.fct_abtinfo() from abteilung abt;
ABT.FCT_ABTINFO()
--------------------------
Abteilung: Marketing
Leiter der Abteilung: Meier
Abb. 6: Funktionsaufruf des angelegten Objektes.
CREATE OR REPLACE VIEW Mitarbeiter_FFM AS
SELECT mit.mitarbeitername, mit.beruf, abt.abteilungsname,
abt.niederlassung
FROM abteilung abt, mitarbeiter mit
WHERE abt.niederlassung='Frankfurt'
AND abt.abteilungsnr= mit.abteilungsnr
WITH READ ONLY;
	
Abb. 7: Beispiel zum Erstellen einer View.
DECLARE 
dd clob;
BEGIN
dd := dbms_metadata.get_ddl('TABLE',
'MITARBEITER',
NULL,
'COMPATIBLE'
'ORACLE',
'DDL');,
dbms_output.put_line(dd);
END;
Abb. 8: Beispielfunktion get_ddl des Packages dbms_metadata.

Nach nunmehr zweieinhalb Jahren geht die Reihe Objekttypen mit dem zehnten Teil zu Ende. Im folgenden Artikel beginnen wir mit dem Buchstaben "T" wie TYPE und TYPE BODY. Außerdem stellen wir die Objekttypen UNDEFINED und VIEW vor. Wir schließen die Reihe mit einem kleinen Einblick in das Package dbms_metadata ab.

TYPE

Mit dem Objekttyp TYPE besteht die Möglichkeit, eigene Objekttypen zu erstellen. Der Objekttyp kann sowohl Funktionen und Prozeduren, als auch einfache Records und Arrays beinhalten. Abbildung 1 zeigt die Erstellung eines einfachen Objekttyps. Der Objekttyp TYPE ist darüber hinaus die Basis der Objektorientierung unter Oracle.

Informationen zu dem Objekttyp TYPE findet man in folgenden Data Dictionary Views:

TYPE BODY

Der Objekttyp TYPE BODY ist mit dem Typ TYPE eng verknüpft, ähnlich wie auch der Typ Package Body mit dem Typ Package verbunden ist. Die Objektspezifikation findet in dem Objekttyp TYPE statt. Dort müssen, wie in Abbildung 2 gezeigt, alle Attribute und Methoden initialisiert und bekannt gemacht werden. Im TYPE BODY (Objektrumpf) werden alle Methoden des Objektes implementiert (siehe Abbildung 3). Methoden können Funktionen und Prozeduren sein.

Anhand dieser Objekttypen ist es z. B. möglich, Tabellen mit den Objektspezifikationen anzulegen (siehe Abbildung 4). Mit der Deklaration der Objekte steht eine Konstruktormethode zur Verfügung, die für die Initialisierung der Objekte genutzt wird (siehe Abbildung 5). Die im TYPE BODY deklarierten Methoden werden auf diese erstellten Objekttypen angewandt. Abbildung 6 zeigt die Anwendung der Funktion fct_abtinfo. Wichtig ist hier die Angabe des Tabellen-Alias und das Voranstellen an die Funktion, da diese Funktion sonst nicht bekannt ist.

UNDEFINED

An dieser Stelle wird kurz der Objekttyp UNDEFINED vorgestellt. Oracle vergibt den Typ UNDEFINED als Objekttyp, wenn Objekte keinem anderen Typ zugeordnet werden können.

VIEW

Eine View ist ein Datenbankobjekt, das eine Benutzersicht auf bestehende Tabellen oder wiederum auf Views selbst bietet. Bei der Erstellung (siehe Abbildung 7) wird nur die SELECT-Anweisung, die die Views definiert, gespeichert. Die eigentlichen Daten werden aus den Datentabellen gelesen. Views vereinfachen zum einen den Zugriff auf komplexe Abhängigkeiten im Datenbankschema und zum anderen können sie dazu dienen, bestimmten Benutzern nur bestimmte Daten sichtbar zu machen.

Die Data Dictionary View dba_views liefert Informationen über Views.

Package dbms_metadata

Zum Abschluss der Reihe stellen wir noch kurz das Package dbms_metadata vor. Mit den zur Verfügung gestellten Prozeduren und Funktionen erhält man Informationen über Metadaten der Objekte.

Das Package wird an dieser Stelle am Beispiel der Funktion get_ddl erläutert. Diese Funktion liefert ein komplettes DDL-Statement des gewünschten Objektes zurück. Hierzu werden der Objekttyp, der Objektname, das Schema, die Version, das Modell und die zu transformierende Ausgabe als Parameter übergeben. Mit dieser Funktion (siehe Abbildung 8) können alle DDLs der in dieser Reihe vorgestellten Objekttypen analog ausgegeben werden.



Ole Breimann (info@ordix.de).