Ueb14 - oth

Werbung
Datenbanken
14. Übung
Aufgabe: PL/SQL
Lösungsschritte:
PL/SQL 1ist die Basis für die folgenden logischen Elemente von Anwendungen:
- SQL*Plus-Skript.
Ein SQL*Plus-Skript kann PL/SQL-Unterprogrammblöcke enthalten.
- Gespeichere Prozeduren oder Funktionen.
Eine gespeicherte Prozedur oder eine Funktion ist ein PL/SQL-Unterprogramm, das durch eine
Client-Anwendung oder einen Anwendungs-Trigger eines Oracle-Werkzeigs aufgerufen werden
kann.
- Datenbanktrigger.
Ein Datenbanktrigger ist ein PL/SQL-Unterprogramm, das eine Aktion aufgrund der Ausführung einer
DML-Anweisung (z.B. insert, update oder delete) an einer Datenbanktabelle durchführt.
- Package.
eine Menge von PL/SQL-Prozeduren, -Funktionen, -Cursor und anderen PL/SQL-Variablen, die in
einem Paket gebündelt werden.
- Anwendungstrigger.
Entwicklungswerkzeuge für Oracle-Anwendungen wie Oracle Forms und Oracle Reports sind mit
einer PL/SQL-Engine ausgestattet, so dass Entwickler mit PL/SQL Anwendungstrigger konstruieren
können.
Ein PL/SQL-Programm besteht aus Prozeduren, Funktionen oder anonymen Blöcken.
Ein anonymer Block ist ein unbekannter PL/SQL-Block, der keine Argumente besitzt und keine Werte
zurückgibt. Anonyme Blöcke kommen häufig in Skripten vor, die in einer SQL*Plus-Sitzung ausgeführt
werden. Prozeduren, die in anonymen Blöcken deklariert und aufgerufen werden, sind temporär.
Wenn die Ausführung der anonymen Blöcke beendet ist, sind sie für Oracle nicht mehr vorhanden.
Die oberste Ebene der Struktur eines PL/SQL-Blocks enthält einen optionalen Abschnitt mit
Deklarationen, einen ausführbaren Abschnitt und einen optionalen Abschnitt für die Behandlung von
Exceptions von Pl/SQL und SQL.
PL/SQL unterstützt die Verwendung von benannten Prozeduren und Funktionen. Eine PL/SQLProzedur führt diverse Aktionen durch und kann optionale Parameter haben. Eine PL/SQL-Funktion
gibt einen Wert mit einem bestimmten Datentyp zurück und kann ebenfalls optionale Parameter
haben.
Prozeduren
CREATE [OR REPLACE] PROCEDURE proc_name
[(<parameter_liste>)
IS <pl/sql_body>
/
- [OR REPLACE] : existierende Prozedurdefinition wird überschrieben
- (<parameter_liste>) : Deklaration der formalen Parameter
(<variable> [IN | OUT |IN OUT] <datatype>,
…..
<variable> [IN | OUT |IN OUT] <datatype>)
- IN, OUT, IN OUT geben an, wie die Prozedur / Funktion auf die Parameter zugreifen kann (Lesen,
Schreiben, beides)
- DEFAULT ist IN
- Bei OUT und IN OUT muß beim Aufruf eine Variable angegeben sein, bei IN ist auch eine Konstante
erlaubt.
1
(vgl. Skriptum 2.3.2.5, 1. PL/SQL)
1
Datenbanken
- <datatype> : Alle von PL/SQL unterstützten Datentypen; ohne Längenangabe (VARCHAR2
anstelle von bspw. VARCHAR2(20)
- pl/sql_body enthält die Definition der Prozedur in PL/SQL
Funktionen
Analog, zusätzlich wird der Datentyp des Ergebnisses angegeben.
CREATE [OR REPLACE] FUNCTION funct_name
[(<parameter_liste>)
RETURN <datatype>
IS <pl/sql_body>
/
Im Falle von "... created with compilation errors" SHOW ERRORS ausgeben lassen
Prozeduren und Funktionen
können mit DROP POCEDURE / FUNCTION name gelöscht werden.
- Aufruf von Prozeduren im Pl/SQL-Skript: prozedurname(arg1, arg2 , ... , argn)
- Aufruf von Prozeduren in SQL*PLUS: execute prozedurname(arg1, arg2, ... , argn)
- Verwendung der Funktion in PL/SQL ... funktionsname(arg1, arg2 , ... , argn) wie in anderen
Programmiersprachen
Die systemeigene Tabelle DUAL kann zur Ausgabe des Ergebnisses freier Funktionen verwendet
werden.
2
Herunterladen