Auch wenn die objektorientierten Fähigkeiten von PL/SQL nicht denen anderen Programmiersprachen entsprechen und in der Literatur eher als Spezialkonstrukte behandelt werden, so lassen sich durchaus Softwarepakete mit Hilfe von PL/SQL erzeugen. Als Module gelten in Oracles prozeduraler Sprache Funktionen, Prozeduren und Pakete. Alle drei Bereiche will dieser Artikel definieren und im Vergleich darstellen.
Funktionen und Prozeduren haben einige ähnliche Eigenschaften und stellen im Zusammenhang mit Paketen untergeordnete Einheiten dar, wenn man die Paketstruktur von PL/SQL nutzen möchte. Daher zeigen wir im folgenden Abschnitt zunächst alle Eigenschaften und Unterschiede auf, die für das Verständ-nis der Modulstruktur notwendig sind.
Es lassen sich daher vier Modulbereiche differenzieren, von denen Sie bisher aktiv nur die anonymen Blöcke verwendet haben:
Eine weitere Struktur möchten wir noch in diesen Reigen aufnehmen, wenn wir auch darauf hinweisen möchten, dass Oracle selbst in seinen Darstellungen darauf verzichtet. Es handelt sich um das Konzept der Trigger, die vermutlich deswegen im Zusammenhang mit PL/SQL nicht erwähnt werden, weil sie der Datenbank-Administration dienen und weniger der Anwendungsentwicklung. Da sie allerdings in PL/SQL geschrieben sind und einige Gemeinsamkeiten zu den anderen Strukturen aufweisen, nennen einige Autoren sie im Zusammenhang mit PL/SQL und andere wiederum nicht.
Die Abbildung soll noch einmal die Position bzw. die Möglichkeit der Speiche-rung der einzelnen Module verdeutlichen. Nur die anonymen Blöcke lassen sich nicht in der Datenbank direkt speichern, sondern sie werden durch andere Techniken aufgerufen, im einfachsten Fall so, wie Sie bisher in diesem Kapitel gearbeitet haben. Außerdem unterscheiden sie sich in der Fähigkeit, selbstständig aufgerufen zu werden. Dies haben wir mit den Begriffen direkt und indirekt gekennzeichnet, wobei ein indirekter Aufruf bedeutet, dass der Aufruf aus einem anderen Modul heraus erfolgt. Ein direkter Aufruf, der für Funktionen beispielsweise nicht möglich ist, bezeichnet dabei die Fähigkeit, unmittelbar aufgerufen zu werden. Eine Funktion muss immer in einem anderen Modul eingesetzt werden. Für die Trigger ergibt sich eine Sonderrolle, da sie nur darauf lauern, dass sie überaus indirekt (darauf haben wir dann in der Abbildung verzichtet) aufgerufen werden, indem nämlich die anderen Module Ereignisse durch DML- oder Systemoperationen auslösen, die den Trigger aktivieren.
comelio.com
