|
Packages Impressum |
PrinzipStored Procedures, Functions und Packages sind Prozeduren und Funktionen, die in der Datenbank gespeichert und verwaltet werden. Sie werden in übersetzter Form abgespeichert. Die Verwaltung in der Datenbank erfolgt analog zu anderen Datenbank-Objekten. Weitere Details und eine Beschreibung der vordefinierten Packages sind in dem Buch Oracle PL/SQL Programmierung zu finden. Erzeugen und Speichern in der Datenbank
Ausgabe der Kompilierungsfehler
Aufruf von Stored Procedures und Functions
Beispiel für einen direkten Aufruf einer Prozedur in SQL*Plus:
Beispiel für einen direkten Aufruf einer Funktion in SQL*Plus:
oder
Anzeige von Stored Procedures, Functions oder Packages
Anzeige einer Stored Procedure, Function oder Package
Anzeige aller Stored Procedures, Functions und Packages
Status INVALID
Hat eine Prozedur, Funktion oder Package den Status "invalid", so ist das Objekt zwar in der Datenbank abgelegt, es ist aber nicht übersetzt. Der nächste Aufruf führt automatisch zum erneuten Übersetzen. Es ist möglich, dass das Programm Fehler enthält oder ein abhängiges Objekt geändert wurde. Manuelles erneutes Übersetzen:
Bestimmen des Status:
Verwendung von Stored Functions in SQL
Eine Stored Function kann prinzipiell in SQL-Befehlen verwendet werden. Es gibt jedoch eine Reihe von Einschränkungen, die von den Seiteneffekten der Funktion abhängig sind. Funktionen aus Packages müssen zur Verwendung in SQL immer eine PRAGMA RESTRICT_REFERENCES-Anweisung enthalten. Einschränkungen
Packages
Eine Package ist eine Zusammenfassung von PL/SQL-Objekten. Sie ist unterteilt in Header und Body. Beide Teile sind getrennte Datenbank-Objekte. Der Header enthält den öffentlichen Teil (Spezifikation), der von außen sichtbar ist. Der Body ist der private Teil (Programm). In ihm werden die im Header deklarierten Prozeduren und Funktionen implementiert. Vorteile von Packages
Nachteil: Ein erneutes Übersetzen einer Package kann zu Problemen führen. Enthält die Package globale Variablen oder Cursor, so verlieren diese Variablen ihren Wert. Das führt entweder zu einem Laufzeitfehler für alle Sessions, die diese Package verwenden oder zu einer erneuten Initialisierung. Ggf. müssen die Anwender die aktuelle Session beenden und neu starten. Package Header
öffentliche Deklarationen von:
END package_name; Die öffentlich deklarierten Objekte können mit der Punkt-Notation direkt angesprochen werden. Die Variablen und Cursor, die im Header deklariert sind, sind persistent für jede Session, d.h. sie sind während der gesamten Dauer einer Session gültig. Package Body
private Deklarationen von:
Implementierung der öffentlichen und privaten Prozeduren und Funktionen
Die privat deklarierten Objekte sind ebenfalls persistent für jede Session. Sie sind jedoch von außen nur über Prozeduren und Funktionen indirekt verwendbar. Der Initialisierungsblock wird einmalig beim ersten Zugriff ausgeführt. Die Köpfe der öffentlich deklarierten Prozeduren und Funktionen müssen im Body und Header identisch sein. Overloading
Es ist möglich, Prozeduren und Funktionen mit dem selben Namen, aber unterschiedlichen Parametern zu deklarieren. Anhand der Aufruf-Parameter wird dann automatisch die richtige Prozedur/Funktion bestimmt. Beispiel:
Aufrufe:
Beispiel einer Package
Verwendung von Package-Funktionen in SQL
Zur Verwendung einer Package-Funktion in SQL ist ein Pragma RESTRICT_REFERENCES zu deklarieren. Damit erfolgt die Definition der Einschränkungen der Funktion manuell (im Gegensatz zu Stored Functions). Die Pragma-Anweisung steht im Package Header nach der Deklaration der entsprechenden Funktion.
WNDS WNPS RNDS RNPS Beispiel:
|
package packages body herder stored procedure procedures functions function create or replace valid invalid objekt objekte Beispiel Beispiele pragma