vierseitig

Werbung
2. Gesicherte Prozeduren
Allgemeine Aspekte gesicherter Prozeduren
2. Gesicherte Prozeduren
Vorteile gesicherter Prozeduren
2. 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.
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
2. Gesicherte Prozeduren
48
Allgemeine Aspekte gesicherter Prozeduren
DB−Host
Client
Anw.−Programm
Allgemeine Aspekte gesicherter 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
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
2. Gesicherte Prozeduren
50
Allgemeine Aspekte gesicherter Prozeduren
Teile und Aspekte gesicherter Prozeduren
DB−Server
Datenbank
DB−Transaktion
• 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, 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.
Anwendung ohne gesicherte Prozedur:
Anw.−Programm
DB−Server
Datenbank
Anwendung mit gesicherter Prozedur:
DB−Transaktion
Transaktions−
aufruf
Client
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
DB−Host
49
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
51
2. Gesicherte Prozeduren
Allgemeine Aspekte gesicherter Prozeduren
• 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)
2. Gesicherte Prozeduren
Client-Seite gesicherter Prozeduren
Client-Seite gesicherter Prozeduren
1. Deklarieren, Alloziieren und Initialisieren von Datenstrukturen und Host-Variablen
2. CONNECT mit einer 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.
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
2. Gesicherte Prozeduren
52
Allgemeine Aspekte gesicherter Prozeduren
Bemerkungen:
2. Gesicherte Prozeduren
54
Client-Seite gesicherter Prozeduren
Die gesicherte Prozedur führt folgendes aus:
• Gesicherte Prozeduren können typischerweise in jeder von einem DBMS unterstützten Wirtssprache geschrieben werden.
• DB2 unterstützt gesicherte Prozeduren in SQL, sowie in C und Java.
• Eine Applikation muß 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 eingebettete SQL-Anweisungen enthalten.
• Nutzung der gesicherten Prozedur über die SQL CALL-Anweisung.
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
53
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 Statuswert über die SQLCA an die Client-Applikation
zurück.
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
55
2. Gesicherte Prozeduren
Client-Seite gesicherter Prozeduren
2. Gesicherte Prozeduren
Nutzung von gesicherten Prozeduren (DB2)
Server-Seite bei gesicherten Prozeduren
Server-Seite bei gesicherten Prozeduren
Eine Deklaration für eine gesicherte Prozedur enthält:
• Eine gesicherte Prozedur wird von einem Anwendungsprogramm aufgerufen mit
exec sql call prozedurname ( host-variable, ...
)
• CALL-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.
• 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.
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
2. Gesicherte Prozeduren
56
Client-Seite gesicherter Prozeduren
• Die SQLCA zeigt Erfolg oder Fehler bei der Prozedurausführung an.
• Detaillierte Angaben zu Implementierung und Deklaration von gesicherten Prozeduren
☞ siehe nächstes Kapitel
•
•
•
•
•
•
Name der Prozedur
Modus, Name und SQL-Datentyp für jeden Parameter
Externer Name, Pfadangabe
Implementierungssprache
Art der Parameter-Übergabe (DB2SQL oder JAVA)
abgeschirmte Ausführung oder nicht (FENCED)
Modus der Parameter in gesicherten Prozeduren:
IN Eingabeparameter
OUT Ausgabeparameter
INOUT Ein- und Ausgabeparameter
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
2. Gesicherte Prozeduren
58
Server-Seite bei gesicherten Prozeduren
External:
• Die EXTERNAL-Klausel gibt an, wo sich die dynamische Bibliothek befindet, die die
gesicherte Prozedur enthält.
• Falls ein relativer Pfadname verwendet wird, wird ausgehend vom Verzeichnis
sqllib/function
der DB2-Instanz gesucht.
• Für in C implementierte gesicherte Prozeduren ist anzugeben:
– Bibliothek oder Pfadname
– Einstiegspunkt durch Angabe eines Funktionsnamens
Für Java
[<jar-file-name>:]<class-name>,<method-name>
Parameterübergabe (C im Modus DB2SQL):
• Analog zu UDFs muß für jeden SQL-Parameter der Deklaration ein C-Parameter
definiert werden.
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
57
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
59
2. Gesicherte Prozeduren
Server-Seite bei gesicherten Prozeduren
2. Gesicherte Prozeduren
• Zusätzlich muß die C-Funktion die folgenden Parameter aufweisen:
sqlint16
char
char
char
char
nullinds[n];
sqlst[6];
qualname[28];
specname[19];
diagmsg[71];
/*
/*
/*
/*
/*
Server-Seite bei gesicherten Prozeduren
SQL Data Access Level
Indikatorvariablen */
SQLSTATE */
qualifizierte Name der ges. Prozedur */
spezifischer Name der ges. Prozedur */
SQL diagnostic string */
Zu Konsistenzzwecken kann in der Deklaration einer gesicherten Prozedur die Benutzung von SQL eingeschränkt werden (“SQL data access level”):
Beispiel 2.1. Implementierung (in Java), Deklaration und Applikation (in C):
NO SQL Keine Ausführung von SQL-Anweisungen in der gesicherten Prozedur.
CONTAINS SQL SQL-Anweisungen dürfen keine Daten lesen oder ver ändern.
1. Hostvariablen und SQL-Anfrage in SQLJ:
MODIFIES SQL DATA keine Einschränkung
READS SQL DATA SQL-Anweisungen dürfen keine Daten verändern.
String empid;
String name;
#sql { SELECT lastname INTO :name
FROM employee WHERE empno=:empid }
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
2. Gesicherte Prozeduren
60
Server-Seite bei gesicherten Prozeduren
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
2. Gesicherte Prozeduren
2. Deklaration der gesicherten Prozedur
Server-Seite bei gesicherten Prozeduren
Schachtelung und Einschränkungen
CREATE PROCEDURE get_lastname( IN empid CHAR(6),
OUT name VARCHAR(15))
EXTERNAL NAME ’myJar:StoredProcedure.getname’
LANGUAGE JAVA
PARAMETER STYLE JAVA
FENCED
READS SQL DATA
Eine Schachtelung von gesicherten Prozeduren ist mit Einschr änkungen erlaubt:
•
•
•
•
3. Nutzung in C:
EXEC SQL BEGIN DECLARE SECTION;
char name[16];
char empid[7];
EXEC SQL END DECLARE SECTION;
LANGUAGE C oder LANGUAGE SQL
Auf tieferer Ebene darf der “SQL data access level” nicht schw ächer sein.
maximale Schachtelungstiefe: 16
kein NOT FENCED
Generelle Einschränkungen bei gesicherten Prozeduren:
• keine Benutzung der Standard Ein- bzw. Ausgabe
• keine SQL-Anweisungen, die im Zusammenhang mit Datenbankverbindungen stehen
• keine Kommandos, die den aktuellen Prozeß terminieren
EXEC SQL get_lastname( :empid, :name );
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
62
61
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
63
2. Gesicherte Prozeduren
Gesicherte SQL-Prozeduren
Gesicherte SQL-Prozeduren
• Statt eines Verweises auf eine extern implementierte Funktion wird in der Deklaration eine SQL-Anweisung angegeben.
• Neben reinen SQL-Anweisungen stehen auch prozedurale Sprachelemente zur
Verfügung, die Programmierung bis zu einem gewissen Maße erm öglichen.
• Vorteil: direkte SQL-Integration in die Sprachelemente
Beispiel 2.2. Gesicherte SQL-Prozedur für eine Gehaltserh öhung:
CREATE PROCEDURE update_salary ( IN eno CHAR(6), IN rate INTEGER )
LANGUAGE SQL
BEGIN
UPDATE employee
SET salary = salary * (1.0 + rate / 100.0)
WHERE empno = eno;
END
Datenbanksysteme: Weiterf ¨uhrende Konzepte — FH Bonn-Rhein-Sieg, SS 07
64
Herunterladen