Start
Unternehmen
Buch-Katalog
Seminare
Leserservice
Comelio-Blog
Datenbanken
SQL
MS SQL Server
Oracle

Trigger

Module

Pakete

SQLX

SysXMLGen

XDB: Sichten

XDB: XML Schema

XDB: XSLT

XDB: XMLType

XDB: Konzepte

XDB: PL/SQL

XML-Speicheransätze

SQLJ

PHP
UML
C#.NET
XML Schema
XSLT

Übersicht

Comelio GmbH
Rellinghauser Straße 10
D-45128 Essen
Deutschland
Fon: 0201-437517-0
Fax: 0201-437517-10
info@comelio.com

Comelio GmbH
Goethestraße 34
D-13086 Berlin
Deutschland
info@comelio.com

Comelio GmbH (Ecos)
Glockengießerwall 17
D-20095 Hamburg
Deutschland
info@comelio.com

Comelio GmbH (Ecos)
Mainzer Landstraße 27-31
D-60329 Frankfurt
Deutschland
info@comelio.com

Comelio GmbH (Ecos)
Stiglmaierplatz/Dachauer Str. 37
D-80335 München
Deutschland
info@comelio.com

Comelio GmbH (Ecos)
Liebknechtstr. 33
D-70565 Stuttgart
Deutschland
info@comelio.com

Comelio GmbH
Nevinghoff 16
D-48147 Münster
Deutschland

Comelio GmbH
Friedrich - List - Platz 1
D-04103 Leipzig
Deutschland

Comelio GmbH
St. Johanner Strasse 41-43
D-66111 Saarbrücken
Deutschland

Comelio GmbH
Kaiser-Wilhem-Ring 27–29
D-50672 Köln
Deutschland

Comelio GmbH
Münsterstraße 248
D-40470 Düsseldorf
Deutschland

Comelio GmbH
Fürther Strasse
D-90429 Nürnberg
Deutschland

Comelio GmbH

Bremen
Deutschland

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

Anrede* Herr Frau
Vorname*
Nachname*
Firma
E-Mail*
Tel-Nr.
Bereich*
Freitext

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.

Position und Aufrufe von Modulen
    Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java XML SQLJ Datenbank-Entwicklung Anleitung PL/SQL Manual Oracle Programmierung Tutorial Leipzig Frankfurt Freiburg Ol Zwickau Stuttgart Heidelberg Bochum Rügen Koblenz Kassel Göttingen Köln Kiel Würzuburg München Magdeburg Koblenz Bonn Aachen Ingolstadt Lübeck Bremen Mannheim Andernach Erlangen Hamburg Wolfsburg Berlin Ludwigshafen Hannover Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java XML SQLJ Datenbank-Entwicklung Anleitung PL/SQL Manual Oracle Programmierung Tutorial Leipzig Frankfurt Freiburg Ol Zwickau Stuttgart Heidelberg Bochum Rügen Koblenz Kassel Göttingen Köln Kiel Würzuburg München Magdeburg Koblenz Bonn Aachen Ingolstadt Lübeck Bremen Mannheim Andernach Erlangen Hamburg Wolfsburg Berlin Ludwigshafen Hannover Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java XML SQLJ Datenbank-Entwicklung Anleitung PL/SQL Manual Oracle Programmierung Tutorial Leipzig Frankfurt Freiburg Ol Zwickau Stuttgart Heidelberg Bochum Rügen Koblenz Kassel Göttingen Köln Kiel Würzuburg München Magdeburg Koblenz Bonn Aachen Ingolstadt Lübeck Bremen Mannheim Andernach Erlangen Hamburg Wolfsburg Berlin Ludwigshafen Hannover Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java XML SQLJ Datenbank-Entwicklung Anleitung PL/SQL Manual Oracle Programmierung Tutorial Leipzig Frankfurt Freiburg Ol Zwickau Stuttgart Heidelberg Bochum Rügen Koblenz Kassel Göttingen Köln Kiel Würzuburg München Magdeburg Koblenz Bonn Aachen Ingolstadt Lübeck Bremen Mannheim Andernach Erlangen Hamburg Wolfsburg Berlin Ludwigshafen Hannover Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java XML SQLJ Datenbank-Entwicklung Anleitung PL/SQL Manual Oracle Programmierung Tutorial Leipzig Frankfurt Freiburg Ol Zwickau Stuttgart Heidelberg Bochum Rügen Koblenz Kassel Göttingen Köln Kiel Würzuburg München Magdeburg Koblenz Bonn Aachen Ingolstadt Lübeck Bremen Mannheim Andernach Erlangen Hamburg Wolfsburg Berlin Ludwigshafen Hannover Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java XML SQLJ Datenbank-Entwicklung Anleitung PL/SQL Manual Oracle Programmierung Tutorial Leipzig Frankfurt Freiburg Ol Zwickau Stuttgart Heidelberg Bochum Rügen Koblenz Kassel Göttingen Köln Kiel Würzuburg München Magdeburg Koblenz Bonn Aachen Ingolstadt Lübeck Bremen Mannheim Andernach Erlangen Hamburg Wolfsburg Berlin Ludwigshafen Hannover Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java XML SQLJ Datenbank-Entwicklung Anleitung PL/SQL Manual Oracle Programmierung Tutorial Leipzig Frankfurt Freiburg Ol Zwickau Stuttgart Heidelberg Bochum Rügen Koblenz Kassel Göttingen Köln Kiel Würzuburg München Magdeburg Koblenz Bonn Aachen Ingolstadt Lübeck Bremen Mannheim Andernach Erlangen Hamburg Wolfsburg Berlin Ludwigshafen Hannover Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java XML SQLJ Datenbank-Entwicklung Anleitung PL/SQL Manual Oracle Programmierung Tutorial Leipzig Frankfurt Freiburg Ol Zwickau Stuttgart Heidelberg Bochum Rügen Koblenz Kassel Göttingen Köln Kiel Würzuburg München Magdeburg Koblenz Bonn Aachen Ingolstadt Lübeck Bremen Mannheim Andernach Erlangen Hamburg Wolfsburg Berlin Ludwigshafen Hannover Comelio GmbH Oracle: PL/SQL-Module Oracle Datenbankprogrammierung Java XML SQLJ Datenbank-Entwicklung Anleitung PL/SQL Manual Oracle Programmierung Tutorial Leipzig Frankfurt Freiburg Ol Zwickau Stuttgart Heidelberg Bochum Rügen Koblenz Kassel Göttingen Köln Kiel Würzuburg München Magdeburg Koblenz Bonn Aachen Ingolstadt Lübeck Bremen Mannheim Andernach Erlangen Hamburg Wolfsburg Berlin Ludwigshafen Hannover
Seminare