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