Methoden (Oracle)

Die Methoden bei Oracle ermöglichen es, für Objekte das zugehörige Objektverhalten in der Datenbank zu hinterlegen. Mit ihnen wird der Grundgedanke der objektorientierten Programmierung umgesetzt, dass zur Beschreibung eines Objekt nicht nur seine Datenwerte, sondern auch sein Verhalten gehören. Und dieses Verhalten wird mittels Methoden implementiert.

Analog zum SQL-Standard, werden die Methoden im CREATE TYPE-Befehl? spezifiziert und an das Objekt gebunden. Damit werden diese Methoden für Objekte, die diesen Typ instanziieren, aufrufbar.

Anders als bei den SQL-Methoden, wo es einen eigenen CREATE METHOD-Befehl gibt, muss für den Umgang mit dem Programmcode einer Methode nach der Programmiersprache unterschieden werden. Handelt es sich bei den Methoden um PL/SQL-Routinen, dann werden bei Oracle die Methoden in einem sogenannten TYPE BODY programmiert. Oracle hat das bereits bekannte Konzept der PL/SQL-Packages übertragen für die Definition von Methoden. Wurden Methoden in Java oder C programmiert, so werden sie in die Datenbank geladen und nur noch im CREATE TYPE spezifiziert. Für mehr Informationen wird auf die unten aufgeführte Quelle der "PL/SQL Language Reference" verwiesen.

Bei Oracle werden drei Arten von Methoden unterschieden:

  • statische Methoden: Sie werden, wie die bekannten PL/SQL-Routinen aufgerufen und ausgeführt. Sie werden nicht für ein konkretes Objekt aufgerufen. Alle in der Routine verfügaben Werte werden explizit mittels Parameter übergeben. Sie werden programmiert für typspezifische Aufgaben, aber nicht für objektsprezifische. Aufgerufen wird sie mittels "Typname.Methodenname()".
  • Member-Methoden: Sie werden objektsprezifisch, also direkt für ein Objekt aufgerufen in der Form "Objektname.Methodenname". Die Daten des Objekts sind immanent verfügbar (SELF-Operator) und müssen nicht mittels Parametern übergeben werden.
  • Konstruktormethoden: Sie werden automatisch für jeden Objekttyp? generiert und ermöglichen die Instanziierung eines Werte gemäß dem Typ des Objekts und sind damit für Wertzuweisungen unerlässlich (z.B. INSERT). Ihre Funktionalität kann durch selbst programmierte Konstruktormethoden überschrieben werden.

Beispiele:


Siehe auch: CREATE-TYPE-Oracle?, CREATE-TYPE-BODY

Quellen:

Kategorie: Objektrelationale DB, M