 |
 |
 |
 |
 |
 |
|
 |
Comelio GmbH Essen Fon: +49(0)201-437517-0 Fax: +49(0)201-437517-10 info@comelio.com
Comelio GmbH Berlin Fon: +49(0)30-3640339-80 Fax: +49(0)30-3640339-89 info@comelio.com
Comelio GmbH Hamburg Fon: +49(0)40-20934996-0 Fax: +49(0)40-20934996-9 info@comelio.com
Comelio GmbH Frankfurt Fon: +49(0)69-17320683-0 Fax: +49(0)69-17320683-9 info@comelio.com
Comelio GmbH München Fon: +49(0)89-38156860-0 Fax: +49(0)89-38156860-9 info@comelio.com
Comelio GmbH Stuttgart Fon: +49(0)711-46051275-0 Fax: +49(0)711-46051275-9 info@comelio.com
Comelio GmbH Leipzig Fon: +49(0)341-3928790-0 Fax: +49(0)341-3928790-9 info@comelio.com
Comelio GmbH Köln Fon: +49(0)221-355337943-0 Fax: +49(0)221-355337943-9 info@comelio.com
Comelio GmbH Düsseldorf Fon: +49(0)211-63556420-0 Fax: +49(0)211-63556420-9 info@comelio.com
 |
Comelio-Blog > Oracle > Module Module
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.
|
 | Kontakt
|
Oracle: Typen von Modulen in PL/SQL
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:
- Anonymer Block
- Die bisherigen Beispielprogramme bildeten allesamt anonyme Blöcke, da sie keine Namensbezeichnung tragen und sich in der Form von Stapelverarbeitungen z. B. in SQP*Plus erzeugen und ausführen lassen. Sie können dabei auf alle anderen Module zugreifen. Diese anonymen Blöcke, so wie wir Sie in den zurückliegenden Abschnitten erzeugt haben, lassen sich genauso in den Anwendungsentwicklungsumgebungen wie Oracle Forms, Reports oder Developer integrieren und dann über entsprechende Benutzeraktionen (wie z. B. Schaltflächen) an die PL/SQL-Maschine weiterleiten. Die Namensgebung bzw. die Namenslosigkeit von anonymen Blöcken lässt sich auch nicht von den Labeln, die mit <<name>> vor dem Beginn des Deklarationsabschnitt angegeben werden beeinflussen, da dies nur ein Name ist, der zur Laufzeit gültig ist und auch zur Adressierung innerhalb von anonymen Blöcken verwendet wird. Die Anonymität bezieht sich schlichtweg auf die Tatsache, dass diese Blöcke nicht in der Datenbank gespeichert werden.
- Funktionen
- Eine Funktion ist ein benannter PL/SQL-Block, der einen oder mehrere Werte aufgrund seiner Programmstruktur an das umliegende Programm oder eine Variable zurückliefert. Sie gleichen damit Funktionen in anderen Programmen oder auch SQL-Funktionen, welche ja ebenfalls einen Wert an eine Abfrage zurückliefern, um Werte für Abfragebedingungen oder Datenänderungen vorzunehmen. Damit sind Funktionen von umgebenden Strukturen wie z. B. anonymen Blöcken oder Prozeduren abhängig. Sie lassen sich nicht selbstständig aufrufen, sondern nur überall dort, wo auch ein Wert des Datentyps erwartet würde, den die Funktion zurückliefert. Syntaktisch erwarten Funktionen Parameter, die zur Verarbeitung in die Funktion eingehen, und liefern RETURN-Werte, die die Funktion als Ergebnis wieder verlassen. Dieses Grundprinzip kennzeichnet auch die Syntax und ihre Verwendung.
- Prozeduren
- Sie stellen eigenständige Programme mit Ausführungsanweisungen dar, die für eine größere Umgebung oder auch einen klar abgeschlossenen Bereich in einem sinnvollen Zusammenhang stehen. Alle anonymen Blöcke, die wir in den vorherigen Abschnitten erstellt haben, könnten auch (vielleicht um einige Funktionalitäten erweitert) zu Prozeduren werden. Über einen Parameteraustausch an der Prozedur-Schnittstelle ist es möglich, Variablenwerte zur Verarbeitung oder für das Setzen bzw. die Vermittlung von Zuständen/Eigenschaften in die Prozedur zu übertragen und auch wieder von ihr zurückzuerhalten. Sie(können Sie als gespeicherte Prozeduren (die berühmten stored procedures aus diversen Werbekatalogen) direkt in der Datenbank speichern und immer wieder aufrufen, um von ihren nützlichen Eigenschaften zu profitieren.
- Pakete
- Pakete stellen die größten bzw. komplexesten Strukturen von PL/SQL dar. Wie Sie eventuell schon selbst in der Dokumentation gesehen haben, befinden sich weit über 80 Pakete mit mannigfaltigen Eigenschaften in Oracle selbst und bieten Ihre Dienste in der Form von Prozeduren und Funktionen (als Zusammenfassung zu größeren Einheiten, die die Funktionalitäten von bestimmten Programmbereichen abdecken) sowie Cursor, Ausnahmen, Datensatztypen, Datensätzen, Typen, Sammlungen und Variablen oder Konstanten.
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.
- Trigger
- Sie werden ebenfalls in der Datenbank gespeichert, können allerdings nicht wie Funktionen oder Prozeduren aufgerufen werden, sondern lauern im Hintergrund auf Zustände und sie auslösende Ereignisse (triggering events), die einen möglichen unerwünschten bzw. inkonsistenten Datenzustand hervorrufen könnten. Sobald sie ausgelöst werden, startet ihr Programm und versucht, die unerwünschten Zustände zu vermeiden. Oracle unterstützt zur Integritätskontrolle Trigger, die sowohl auf DML- als auch auf System-Operationen reagieren.
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 GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java Anleitung PL/SQL Manual Oracle Datenbank-Entwicklung Programmierung XML SQLJ Tutorial -Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java Anleitung PL/SQL Manual Oracle Datenbank-Entwicklung Programmierung XML SQLJ Tutorial -Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java Anleitung PL/SQL Manual Oracle Datenbank-Entwicklung Programmierung XML SQLJ Tutorial -Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java Anleitung PL/SQL Manual Oracle Datenbank-Entwicklung Programmierung XML SQLJ Tutorial -Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java Anleitung PL/SQL Manual Oracle Datenbank-Entwicklung Programmierung XML SQLJ Tutorial -Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java Anleitung PL/SQL Manual Oracle Datenbank-Entwicklung Programmierung XML SQLJ Tutorial -Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java Anleitung PL/SQL Manual Oracle Datenbank-Entwicklung Programmierung XML SQLJ Tutorial -Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java Anleitung PL/SQL Manual Oracle Datenbank-Entwicklung Programmierung XML SQLJ Tutorial -Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java Anleitung PL/SQL Manual Oracle Datenbank-Entwicklung Programmierung XML SQLJ Tutorial -
|
 |