Gesicherte Prozeduren

Werbung
1. Datenbank-Programmierung
Gesicherte Prozeduren
Gesicherte Prozeduren
Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise
– jede SQL-Anweisung einzeln vom Client an den Server gesandt,
und
– jedes Ergebnistupel wird einzeln zurückgeliefert.
Oft hat man jedoch Operationen innerhalb einer Anwendung, die eine hohe Last auf der Datenbank erzeugen und eine geschlossene
Einheit ohne Benutzerinteraktion darstellen.
Für solche Operationen ist es sinnvoll, sie auf der Server-Maschine
als sogenannte gesicherte Prozedur (stored procedure) abzulegen
und sie durch eine einzelne Nachricht vom Client aus aufzurufen.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
32
1. Datenbank-Programmierung
Gesicherte Prozeduren
DB−Host
Client
Anw.−Programm
DB−Server
Datenbank
DB−Transaktion
Anwendung ohne gesicherte Prozedur:
Anw.−Programm
DB−Server
Datenbank
DB−Transaktion
Anwendung mit gesicherter Prozedur:
Transaktions−
aufruf
Client
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
DB−Host
33
1. Datenbank-Programmierung
Gesicherte Prozeduren
Eine vollständige Anwendung mit einer gesicherten Prozedur hat
stets zwei Teile:
– Die Prozedur selbst, die auf der Servermaschine läuft, und
– das eigentliche Anwendungsprogramm, das auf der ClientMaschine läuft.
Anwendungen mit gesicherten Prozeduren haben die Restriktion,
daß:
– sämtliche Eingabedaten zum Zeitpunkt des Aufrufs vom Anwendungsprogramm an die gesicherte Prozedur übergeben werden
müssen, und daß
– Ergebnisdaten erst dann an das Anwendungsprogramm zurückgegeben werden, wenn die Prozedur vollständig abgearbeitet wurde.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
1. Datenbank-Programmierung
34
Gesicherte Prozeduren
Während der Prozedurausführung ist keine Interaktion zwischen Anwendungsprogramm und gesicherter Prozedur möglich.
Man kann gesicherte Prozeduren typischerweise in jeder vom DBSystem unterstützten Wirtssprache schreiben.
Häufig kommen hierfür prozedurale SQL-Erweiterungen zum Einsatz, beispielsweise PL/SQL (Oracle).
Aspekte von gesicherten Prozeduren:
– Implementierung (Server)
– Deklaration (Server)
– Nutzung (Client)
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
35
1. Datenbank-Programmierung
Gesicherte Prozeduren
Nutzung von gesicherten Prozeduren (DB2)
Eine gesicherte Prozedur wird von einem Anwendungsprogramm
aufgerufen mit
!
"$#%&'()*,+-./0
1-11
2
4356-6 -Anweisungen sind nur als statisches SQL möglich.
Der Prozedurname kann als Konstante oder über eine Wirtsvariable
angegeben werden.
Konstanten als Parameter sind nicht erlaubt.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
1. Datenbank-Programmierung
36
Gesicherte Prozeduren
Die Parameter müssen Indikator-Variablen aufweisen.
Parameter können sein:
– Eingabeparameter
– Ausgabeparameter
– Sowohl Eingabe- als auch Ausgabeparameter
Dies wird bei der Deklaration der gesicherten Prozedur definiert.
Die SQLCA zeigt Erfolg oder Fehler bei der Prozedurausführung an.
Implementierung und Deklaration von gesicherten Prozeduren
☞ siehe nächstes Kapitel
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
37
1. Datenbank-Programmierung
Gesicherte Prozeduren
Vorteile von gesicherten Prozeduren
Effizienz
Ausführung der Prozeduren unter Kontrolle des DBMS
Strukturierungsmittel für größere Anwendungen
zentrale Kontrollen der Prozeduren, redundanzfreie Darstellung relevanter Aspekte der Anwendungsfunktionalität
☞ einfache Wiederverwendbarkeit
Rechtevergabe für Prozeduren
Aktive Aspekte: gesicherte Prozeduren im Aktionsteil von Triggern
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
1. Datenbank-Programmierung
38
Prozedurale SQL-Erweiterungen
Prozedurale SQL-Erweiterungen
Prozedurale SQL-Erweiterungen unterscheiden sich typischerweise
durch die folgenden Punkte von dem Ansatz der Einbettung:
Neue dedizierte Sprache mit direkter Integration der SQLAnweisungen
☞ bekannteste Variante: PL/SQL von Oracle
Ausführung der Programme immer im Datenbank-Server
Zugriff auf Typinformation der Datenbank
Integration des Cursor-Konzeptes in Kontrollstrukturen
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
39
1. Datenbank-Programmierung
Prozedurale SQL-Erweiterungen
Aufbau in PL/SQL
Aufbau eines PL/SQL-Skripts:
798 :<;>=<?98
@BADCEFAHGBIJLKM JONIHADCA PFE9QRKSJRK
TFTFT
U8<VWLX
YZ\[]_^ K*Ma` [HbFYZc[]ed Kf9JFE>g ^ KFhSJRK
TFTFT
8<i:D8\jHkW\lcX
m9no>JqprPFEHQLK ]Ls AeK*MFItJcC
TFTFT
8\Xt7u
Datentypen: Datentypen: Datentypen von SQL, Cursor, Strukturen, Felder
Kontrollstrukturen: SQLAnweisungen, Zuweisungen, if,
loop, for, while, Exceptions
Exceptions: vordefinierte
und
selbstdefinierte Exceptions
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
40
1. Datenbank-Programmierung
Prozedurale SQL-Erweiterungen
Zugriff auf Typinformationen im Deklarationsteil:
3xty{ztw|~} v tw,y-€,ƒ‚
v w,
„ x v… †3xty{ztw|-|z‡-y-€,ˆ‚
Cursor ‰ z | -Loop:
… |
Hx|{z| Š*‹& ! Œ-
ry }}-}
Ž ‹Œ v
}}-}
r‘’ )*,+-./ ! “ ” Š‹&r !
}-}}
– ”-—6 ‘-‘• ‚
}}-}
v… ‚
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
6 ‘-‘•
41
1. Datenbank-Programmierung
Prozedurale SQL-Erweiterungen
Der Cursor wird unmittelbar vor Ausführung der for-Schleife geöffnet
und nach dem Verlassen automatisch geschlossen.
Pro Schleifentupel wird ein Tupel verarbeitet (kein explizites fetch notwendig).
Ž
Innerhalb der Schleife steht die Variable ˜ |‹Œ v w, für den Zugriff auf das aktuelle Tupel zur Verfügung.
Status eines Cursors kann abgefragt werden.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
1. Datenbank-Programmierung
42
Prozedurale SQL-Erweiterungen
Einsatz von prozeduralen SQL-Erweiterungen in Verbindung mit:
gesicherten Prozeduren
Trigger
Packages
*|r-*y{™|zr … x|
š r*›H!œ"†‹+-./œž
}-}}
v… ‚
}-}}Ÿ2Œ-
|r-*y{ yr|{Œ| v ‡3xty{ztw|
‰ y| Œ v |y z v xyztw|
‰ z| H¡ |z‡
}-}}
v… ‚
|r-*y{™,r „ †3xyzw,|¢{ v… rŒ v r
|rz … x|r v ‡3xty{ztw| }}-}£ v… ‚
|rz … x|r … -
*y{3xyzw,| }-}}¤ v… ‚
v… ‚
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
43
Herunterladen