10
Stored Procedures in Datenbanken

Stored Procedures in Datenbanken

  • Upload
    paley

  • View
    34

  • Download
    5

Embed Size (px)

DESCRIPTION

Stored Procedures in Datenbanken. Was sind stored procedures?. Gespeicherte Programmteile Datenbankobjekte Vom DB-Benutzer definiert Werden im DB-Server-Prozess ausgeführt Erweitern die Funktionalität des DBMS. Wozu sind Stored Procedures gut?. Erweiterung der Funktionalität von DBMSn - PowerPoint PPT Presentation

Citation preview

Page 1: Stored Procedures in Datenbanken

Stored Procedures in Datenbanken

Page 2: Stored Procedures in Datenbanken

Was sind stored procedures?

Gespeicherte Programmteile Datenbankobjekte Vom DB-Benutzer definiert Werden im DB-Server-Prozess ausgeführt Erweitern die Funktionalität des DBMS

Page 3: Stored Procedures in Datenbanken

Wozu sind Stored Procedures gut?

Erweiterung der Funktionalität von DBMSn wenn die Möglichkeiten von SQL nicht genügen

u. wenn eine Verarbeitung am Server sinnvoller ist

Trigger um die DB konsistent zu halten um mehr semantische Information zu definieren

Methoden von Objekten bei objekt-relationalen DBn

Page 4: Stored Procedures in Datenbanken

Wer bietet stored procedures?

Große DBMS bieten Stored Procedures, z. B. IBM DB2 Microsoft SQL-Server Oracle Caché ...

Stored Procedures werden nicht unterstützt von File-Server Datenbanken (z. B. Access) nicht kommerziellen Systemen (z. B. MySQL)

Page 5: Stored Procedures in Datenbanken

Aufruf und Ablauf von Stored Procedures

Client-Programm(z. B. JAVA, JDBC)

...CallableStatement cstmt =con.prepareCall ({?=CALL Reserv(?,?,?,?)});cstmt.setInt(1, KundenID);...cstmt.execute();...

DB-Server

Reserv(k integer, ...)beginif x > 10 then...SELECT * FROM Tab2 ......INSERT INTO Reservierung ......end;

Tab1

Tab2

Page 6: Stored Procedures in Datenbanken

Stored Procedures bei Oracle

Programmiersprache PL/SQL C, C++ und JAVA sind auch möglich PL/SQL ist typenstrenge

Programmiersprache Cursor verbinden SQL mit prozeduraler

Verarbeitung Besondere Konstrukte für Datenzugriff

for cursor loop Datensatztyp-Deklaration Collection-Typen

Page 7: Stored Procedures in Datenbanken

Stored Procedures bei Oracle: Aufbau

Deklarationsteil Deklaration von Variablen, Cursor,

Collections, ... Ausführungsteil

Programmierung des Algorithmus Transaktionssteuerung

Ausnahmebehandlung Reaktionen auf Fehler werden hier

zusammengefasst Damit wird GOTO vermieden

Page 8: Stored Procedures in Datenbanken

Beispiel Reservierung:Deklarationsteil

create or replace function Reserv (kid integer, aid integer, von date, bis date)return integer as

declare autozahl integer; z integer; tage integer; cursor c1 is Select * from Reservierung where ModellID = aid and ((Beginn >= von and Beginn <= bis) or (Beginn <= von and Ende >= von)); var_c c1%rowtype;

Page 9: Stored Procedures in Datenbanken

Beispiel Reservierung: Ausführungsteil

begin tage = bis - von; Select count(*) into autozahl from Auto where Modell = aid; For i in 0 .. tage loop z := autozahl; for var_c in c1 loop if von + i >= var_c.Beginn and von + i <= var_c.Ende then z := z - 1; end if; end loop; exit when z <= 0; end loop; if z <= 0 then return 0; else insert into Reservierung values (reservierungseq.nextval, kid, aid, von, bis); return 1; end if;end;/

Page 10: Stored Procedures in Datenbanken

Ausnahmebehandlung

Benutzerdefinierte Ausnahmendeclare ausnahme1 exception; ... begin ... raise ausnahme1 ...exception

when ausnahme1 then <aktion>end;

Daten-Ausnahmen (vordefiniert), z. B. when data_not_foundwhen max_open_cursors