3. Stored Procedures und PL/SQL

Werbung
3. Stored Procedures und PL/SQL
Allgemeine Aspekte gesicherter Prozeduren
3. Stored Procedures und PL/SQL
• 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.
Objektrelationale Datenbanksysteme — Hochschule Bonn-Rhein-Sieg, WS 2012/13
44
3. Stored Procedures und PL/SQL
Allgemeine Aspekte gesicherter Prozeduren
DB−Host
Client
Anw.−Programm
DB−Server
Datenbank
DB−Transaktion
Anwendung ohne gesicherte Prozedur:
Anw.−Programm
DB−Server
Datenbank
Anwendung mit gesicherter Prozedur:
DB−Transaktion
Transaktions−
aufruf
Client
Objektrelationale Datenbanksysteme — Hochschule Bonn-Rhein-Sieg, WS 2012/13
DB−Host
45
3. Stored Procedures und PL/SQL
Allgemeine Aspekte gesicherter Prozeduren
Vorteile gesicherter Prozeduren
•
•
•
•
höhere Effizienz
Ausführung der Prozeduren unter Kontrolle des DBS
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
Objektrelationale Datenbanksysteme — Hochschule Bonn-Rhein-Sieg, WS 2012/13
46
3. Stored Procedures und PL/SQL
Allgemeine Aspekte gesicherter Prozeduren
Teile und Aspekte gesicherter Prozeduren (1)
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 Client-Maschine läuft.
Anwendungen mit gesicherten Prozeduren haben die Restriktion, dass:
• sämtliche Eingabedaten zum Zeitpunkt des Aufrufs vom Anwendungsprogramm
an die gesicherte Prozedur übergeben werden müssen, und dass
• Ergebnisdaten erst dann an das Anwendungsprogramm zurückgegeben werden,
wenn die Prozedur vollständig abgearbeitet wurde.
Objektrelationale Datenbanksysteme — Hochschule Bonn-Rhein-Sieg, WS 2012/13
47
3. Stored Procedures und PL/SQL
Allgemeine Aspekte gesicherter Prozeduren
Teile und Aspekte gesicherter Prozeduren (2)
• Während der Prozedurausführung ist keine Interaktion zwischen Anwendungsprogramm und gesicherter Prozedur möglich.
• Man kann gesicherte Prozeduren typischerweise in jeder vom DB-System 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)
• Die Unterscheidung zwischen Implementierung und Deklaration ist nur dann von
Bedeutung, wenn keine prozedurale SQL-Erweiterung verwendet wird.
Objektrelationale Datenbanksysteme — Hochschule Bonn-Rhein-Sieg, WS 2012/13
48
3. Stored Procedures und PL/SQL
Allgemeine Aspekte gesicherter Prozeduren
Bemerkungen zu gesicherten Prozeduren
• Gesicherte Prozeduren können in mehreren Wirtssprache geschrieben werden.
• Oracle z.B. unterstützt gesicherte Prozeduren in PL/SQL und Java (und prinzipiell
auch in C).
• Eine Applikation muss nicht in der gleichen Sprache entwickelt sein wie die gesicherten Prozeduren, die von ihr genutzt werden.
• Die Prozedur wird übersetzt und auf dem Server installiert.
• Eine gesicherte Prozedur darf SQL-Anweisungen enthalten.
• Nutzung der gesicherten Prozedur über die SQL CALL-Anweisung.
Objektrelationale Datenbanksysteme — Hochschule Bonn-Rhein-Sieg, WS 2012/13
49
3. Stored Procedures und PL/SQL
Client-Seite gesicherter Prozeduren
Client-Seite gesicherter Prozeduren
1. Deklarieren, Alloziieren und Initialisieren von Datenstrukturen und Variablen
2. CONNECT mit der Datenbank
3. Aufruf der gesicherten Prozeduren durch SQL CALL
4. DISCONNECT
Gesicherte Prozeduren und Transaktionen:
• Prinzipiell können gesicherte Prozeduren COMMIT und ROLLBACK ausführen.
☞ Besser: Transaktionssteuerung durch die Applikation
☞ Kein COMMIT und ROLLBACK in gesicherten Prozeduren.
Objektrelationale Datenbanksysteme — Hochschule Bonn-Rhein-Sieg, WS 2012/13
50
3. Stored Procedures und PL/SQL
Client-Seite gesicherter Prozeduren
Die gesicherte Prozedur führt folgendes aus:
1. Sie nimmt die Parameter der Client-Applikation entgegen,
2. führt die in ihr enthaltenen Operationen in der gleichen Transaktion wie die ClientApplikation aus,
3. führt optional COMMIT oder ROLLBACK Operationen durch und
4. gibt einen Resultats- und Statuswerte an die Client-Applikation zurück.
Objektrelationale Datenbanksysteme — Hochschule Bonn-Rhein-Sieg, WS 2012/13
51
3. Stored Procedures und PL/SQL
Client-Seite gesicherter Prozeduren
Nutzung von gesicherten Prozeduren (Java)
• Nutzung in JDBC mittels CallableStatement, ☞ JDBC-Folien
• Parameter von gesicherten Prozeduren können sein:
– Eingabeparameter
– Ausgabeparameter (gesicherte Prozeduren unterstützen Call by Reference)
– Sowohl Eingabe- als auch Ausgabeparameter
Dies wird bei der Deklaration der gesicherten Prozedur definiert.
• In JDBC müssen die Eingabeparameter vorher mit setXXX() initialisiert werden.
• Analog können die Werte für Ausgabeparameter mit getXXX() ermittelt werden.
• Detaillierte Angaben zu Implementierung und Deklaration von gesicherten Prozeduren mit Hilfe von PL/SQL
☞ später
Objektrelationale Datenbanksysteme — Hochschule Bonn-Rhein-Sieg, WS 2012/13
52
3. Stored Procedures und PL/SQL
Server-Seite bei gesicherten Prozeduren
Server-Seite bei externen gesicherten Prozeduren
Dies betrifft gesicherte Prozeduren, die in einer externen Sprache wie C, Java (oder anderen unterstützten Sprachen) implementiert sind, keine PL/SQLImplementierungen.
Eine Deklaration für eine gesicherte Prozedur enthält hier typischerweise:
•
•
•
•
•
•
Name der Prozedur
Modus, Name und SQL-Datentyp für jeden Parameter
Externer Name, Pfadangabe für dynamische Bibliothek
Implementierungssprache
Art der Parameter-Übergabe (bei DB2 z.B. DB2SQL oder JAVA)
weitere Angaben, z.B. abgeschirmte Ausführung oder nicht (FENCED)
Objektrelationale Datenbanksysteme — Hochschule Bonn-Rhein-Sieg, WS 2012/13
53
3. Stored Procedures und PL/SQL
Server-Seite bei gesicherten Prozeduren
Parametermodi
Modus der Parameter in gesicherten Prozeduren:
IN Eingabeparameter
OUT Ausgabeparameter
INOUT Ein- und Ausgabeparameter
Objektrelationale Datenbanksysteme — Hochschule Bonn-Rhein-Sieg, WS 2012/13
54
Herunterladen