Datenbanken: Prozedurales SQL

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Datenbanken: Prozedurales SQL"

Transkript

1 Datenbanken: Prozedurales SQL Anwendungsentwicklung für relationale Datenbanken setzt voraus, dass prozedurale Abläufe programmiert werden können! (Endanwendern ist nicht zuzumuten, SQL zu lernen und selbst Anfragen oder Manipulationsstatements zu formulieren) Es gibt zwei Ansätze: 1. SQL erweitern um prozedurale Sprachkonstrukte Ergebnis: Standard SQL-99 Erweiterung um Trigger, Module und Prozeduren 2. bestehende 3GLs erweitern um die Möglichkeit, SQL Statements zu verarbeiten Ergebnis: Standard SQL-99 Call Level Interface und Realisierungen in C (ODBC), C++, Java (JDBC), etc.... 1

2 SQL-99 Standard Erweiterung um prozedurale Konstrukte: Im Standard SQL-99 werden prozedurale Erweiterungen an 3 Stellen behandelt: 1. Im Zusammenhang mit Triggern 2. Im Zusammenhang mit Persistent Stored Modules (PSM) 3. Im Zusammenhang mit SQL Invoked Routines 2

3 Trigger Trigger sind Ereignis gesteuerte Programme, die einer Tabelle zugeordnet sind und beim Eintreten des Ereignisses für diese Tabelle den programmierten Code ausführen. Mögliche Ereignisse sind: insert bzgl. der dem Trigger zugeordneten Tabelle; update bzgl. der dem Trigger zugeordneten Tabelle; delete bzgl. der dem Trigger zugeordneten Tabelle; 3

4 Trigger Beispiel (PostgreSQL): create or replace function proc_doznr returns trigger as $proc_doznr$ begin new.doznr := nextval( doznr_seq ); return new; end; $proc_doznr$ language plpgsql; / create or replace trigger t_doznr before insert on dozent for each row execute procedure proc_doznr(); / 4

5 Trigger Beispiel (Oracle): create or replace trigger t_doznr before insert on dozent for each row Begin select doznr_seq.nextval into :new.doznr from dual; End; / 5

6 Trigger Trigger sind Datenbankobjekte, die also über ein create trigger Statement erzeugt, und ein drop trigger Statement gelöscht werden. Standard SQL-99 Syntax: create trigger <triggername> BEFORE AFTER < trigger event > ON < Table name > [ REFERENCING { OLD NEW } [ ROW ] [ AS ] < alias name > ] < triggered action >; < trigger event > ::= INSERT DELETE UPDATE [ OF < column comma list > ] < triggered action> ::= [ FOR EACH ROW ] [ WHEN < search condition > ] SQL Statement BEGIN ATOMIC { SQL Statement } END 6

7 Trigger Beispiel: CREATE TRIGGER t_personentab AFTER delete ON Personentab REFERENCING OLD AS del_row FOR EACH ROW BEGIN ATOMIC insert into Protokoll values ('Ein Datensatz in Personentab wurde gelöscht', current_date); insert into Personentab_save values (del_row.persnr, del_row.name); END; Warnung: Die Syntax beim Datenbankhersteller ORACLE und PostgreSQL ist etwas anders!! (siehe später) 7

8 Trigger Erläuterungen: CREATE TRIGGER t_personentab AFTER delete ON Personentab CREATE TRIGGER t_personentab AFTER delete ON Personentab CREATE TRIGGER t_personentab AFTER delete ON Personentab CREATE TRIGGER t_personentab AFTER delete ON Personentab REFERENCING OLD AS del_row Zündzeitpunkt für den Trigger. Hier: nach dem delete Ereignis, auf das der Trigger reagiert. Hier: delete Tabelle der der Trigger zugeordnet ist. Hier: Personentab Mit welchem Alias kann der Datensatz im Fokus des Triggers referenziert werden: del_row Bei delete kann nur OLD verwendet werden, bei insert nur NEW, bei update beides! 8

9 Trigger Erläuterungen: CREATE TRIGGER t_personentab AFTER delete ON Personentab REFERENCING OLD AS del_row FOR EACH ROW Wie oft der Trigger zünden soll: für jedes Statement einmal (default), oder für jede Zeile einmal. Beispiel: Annahme: in der Tabelle Personentab gibt es 10 Datensätze mit dem Namen Meier. Das Statement: delete from Personentab where name = Meier ; wird ausgeführt. a) FOR EACH ROW ist spezifiziert: der Trigger zündet 10 mal (und schreibt 10 Datensätze in die Tabelle Protokoll. b) FOR EACH ROW ist nicht spezifiziert: der Trigger zündet nur einmal. 9

10 Trigger Erläuterungen: CREATE TRIGGER t_personentab AFTER delete ON Personentab REFERENCING OLD AS del_row FOR EACH ROW WHEN gebdat < ' ' Genauere Spezifikation, wann der Trigger zünden soll. (optional!!) Im Beispiel: ist die obige WHEN Klausel spezifiziert, wird das delete Statement auf jeden Fall ausgeführt, der Trigger zündet aber nur, wenn die Bedingung erfüllt ist, d.h. wenn Datensätze gelöscht werden von Personen, deren Geburtsdatum vor dem liegt! 10

11 Trigger Erläuterungen: CREATE TRIGGER t_personentab AFTER delete ON Personentab REFERENCING OLD AS del_row FOR EACH ROW WHEN gebdat < ' ' BEGIN ATOMIC... END Angabe der Aktion, die der Trigger ausführen soll. Ist nur ein Statement angegeben, das der Trigger ausführen soll, kann die Klammer BEGIN ATOMIC... END weggelassen werden: CREATE TRIGGER t_personentab AFTER delete ON Personentab REFERENCING OLD AS del_row FOR EACH ROW insert into Personentab_save values (del_row.persnr, del_row.name); Sollen mehrere Statements ausgeführt werden, müssen diese von BEGIN ATOMIC und END umklammert werden. 11

12 Trigger Erläuterungen: CREATE TRIGGER t_personentab AFTER delete ON Personentab REFERENCING OLD AS del_row FOR EACH ROW BEGIN ATOMIC... END Angabe der Aktion, die der Trigger ausführen soll. ATOMIC bedeutet: es müssen alle Statements des Triggers ausführbar sein! Kann eines nicht ausgeführt werden, wird keines ausgeführt und alle bis dahin bereits ausgeführten Statements werden wieder zurückgenommen, inklusive des auslösenden SQL-Statements!! 12

13 Trigger Erläuterungen: CREATE TRIGGER t_personentab AFTER delete ON Personentab REFERENCING OLD AS del_row FOR EACH ROW BEGIN ATOMIC... END Angabe der Aktion, die der Trigger ausführen soll. Ist im Trigger BEFORE spezifiziert, sind folgende Statements als Triggeraction möglich: DECLARE CURSOR, OPEN, CLOSE, FETCH, SELECT (single row), FREE LOCATOR, HOLD LOCATOR, RETURN, GET DIAGNOSTICS. Ist im Trigger AFTER spezifiziert, sind folgende Statements als Triggeraction möglich: Alle Statements wie bei BEFORE, zusätzlich: INSERT, UPDATE, DELETE, CALL (Aufruf einer beliebigen SQL invoked routine) 13

14 Trigger Es scheint so zu sein, dass alle Sprachkonstrukte, die im Zusammenhang mit Persistent Stored Modules (PSM) im Standard definiert sind (LOOP, IF, etc....), in Triggern und SQL-Invoked Routines möglich sind. Aktionen sollten nur dann durch Trigger ausgeführt werden, wenn sie nicht bereits durch Constraints realisierbar sind! (Constraints beachten Gegenwart und Zukunft bzgl. der Daten, Trigger nur zukünftige Datenänderungen) Die Implementierung eines Triggerkonzepts ist bei den verschiedenen Datenbankherstellern durchaus unterschiedlich in Umfang und Syntax! Trigger können gelöscht werden durch das Statement: DROP TRIGGER < trigger name >; bzw. ALTER TABLE <tabname> DROP TRIGGER < trigger name>; 14

15 Datenbanken: PL / SQL (ORACLE) Trigger Bei der Implementierung des Trigger Konzepts des Herstellers ORACLE sind alle prozeduralen Sprachkonstrukte als triggered action erlaubt! Das single row select Statement ist realisiert als select into. Begin ATOMIC hat Oracle nicht implementiert! insert, update, delete oder select Statements im Trigger auf die Tabelle, der der Trigger zugeordnet ist, sind verboten! Transaktions-Statements im Trigger sind verboten. Die Referenz-Aliasnamen für OLD und NEW müssen mit einem vorangestellten Doppelpunkt versehen sein (wie host Variable): CREATE TRIGGER t_personentab AFTER delete ON Personentab REFERENCING OLD AS del_row FOR EACH ROW BEGIN insert into Personentab_save values (:del_row.persnr, :del_row.name); END; 15

16 Datenbanken: PL / SQL (ORACLE) Trigger In einem Trigger können mehrere Ereignisse behandelt werden: create trigger t_personentab after insert or delete or update on Personentab for each row Begin if inserting then < action statements >... end if; if deleting then < action statements >... end if; if updating then < action statements >... end if; End; 16

17 Datenbanken: PL / SQL (ORACLE) Trigger Trigger können vorübergehend deaktiviert und wieder aktiviert werden: Alter Trigger < trigger name > DISABLE; Alter Trigger < trigger name > ENABLE; Um Trigger zu erzeugen, braucht man das Systemrecht create trigger: als DBA: grant create trigger to < user >; PL / SQL Objekte können mit dem SQLDeveloper entwickelt werden! Zur Erzeugung kann das create or replace Statement für alle Datenbankobjekte benutzt werden. Dabei werden eventuell bereits existierende Objekte überschrieben. Wie im Standard darf ein Trigger keine DDL - und keine Transaktions - Statements enthalten. Die triggered action wird in die Transaktion des auslösenden SQL- Statements eingebettet. 17

18 Datenbanken: PL / SQL (ORACLE) Trigger Beispiel: create table watch_protokoll (protnr integer, Aktion varchar(10), Benutzer varchar2(15), persnr integer, name_alt varchar2(30), name_neu varchar2(30), Löschdatum date); create sequence protnr_seq; create or replace trigger t_watchdog after delete or update of name on Person for each row begin if deleting then insert into watch_protokoll (select protnr_seq.nextval, 'Delete', user, :old.persnr, :old.name, NULL, sysdate from dual); end if; if updating then insert into watch_protokoll (select protnr_seq.nextval, 'Update', user, :old.persnr, :old.name, :new.name, sysdate from dual); end if; End; / 18

19 Datenbanken: PL / SQL (PostgreSQL) Trigger Ein Trigger kann nur eine sogenannte user-defined Trigger-Function ausführen! Diese enthält das Programm, das der Trigger ausführen soll. Das single row select Statement ist realisiert als select into. Begin ATOMIC hat PostgreSQL nicht implementiert! insert, update, delete oder select Statements im Trigger auf die Tabelle, der der Trigger zugeordnet ist, sind verboten! Transaktions-Statements im Trigger sind verboten. Verwendung von OLD und NEW bzw. ihre Referenz-Aliasnamen ohne vorangestellten Doppelpunkt! 19

20 Datenbanken: PL / SQL (PostgreSQL) Trigger Beispiel: create or replace function proc_doz() returns trigger as $body$ begin update dozent irgend ein update where doznr = new.doznr; return null; end; $body$ language plpgsql; / create trigger t_doz after insert on pruefung for each row execute procedure proc_doz(); / 20

21 Datenbanken: PL / SQL (PostgreSQL) In einem Trigger können mehrere Ereignisse behandelt werden: create or replace function proc_personentab() returns trigger as $body$ begin if (TG_OP = INSERT ) then < action statements >... elsif (TG_OP = DELETE ) then < action statements >... Trigger elsif (TG_OP = UPDATE ) then < action statements >... end if; return null; end; $body$ language plpgsql; / create trigger t_personentab after insert or update or delete on personentab for each row execute procedure proc_personentab(); / 21

22 Routines Im Standard SQL-99 können Prozeduren oder Funktionen erzeugt werden, die SQL-Daten verarbeiten oder auch nicht. Was möglich ist, ist im Kapitel SQL - Invoked Routines definiert. Prozeduren oder Funktionen werden über ein create procedure / create function Statement erzeugt und sind damit Datenbankobjekte wie Tabellen oder Trigger. Prozeduren oder Funktionen können durch ein explizites CALL < routine name > aufgerufen werden oder implizit in einem SQL Statement durch Angabe des Namens und der optionalen Parameter (siehe später). Prozeduren oder Funktionen werden gelöscht mit dem Statement DROP { PROCEDURE FUNCTION } < name >; 22

23 Routines Syntax (vereinfachte Version): CREATE PROCEDURE CREATE FUNCTION < routine name > ( [ < parameter > < data type > [ {, < parameter > < data type > }... ] ] ) [ RETURNS < data type > ] [ LANGUAGE { ADA C COBOL FORTRAN... SQL } ] [ PARAMETER STYLE { SQL GENERAL } ] [ NO SQL CONTAINS SQL READS SQL DATA MODIFIES SQL DATA ] < SQL Statement > EXTERNAL [ NAME <external routine name > ] 23

24 Routines Erläuterungen: Bei Funktionen ist die RETURNS Deklaration Pflicht! Außerdem muss im routine body eine RETURN Anweisung stehen! LANGUAGE und PARAMETER STYLE Anweisungen sind nur interessant, wenn externe Prozeduren / Funktionen erzeugt werden bzw. darauf verwiesen wird. SQL Statement kann entweder ein einzelnes SQL Statement sein oder eine Gruppe von SQL Statements, eingeklammert durch BEGIN ATOMIC... END. Parameter können deklariert werden, es gibt 3 unterschiedliche Typen: IN, OUT oder INOUT. Default ist IN. Werden keine Parameter deklariert, muss trotzdem die Klammerung () stehen! In der Routine dürfen keine DDL- oder Transaktions-Statements stehen! 24

25 Routines Beispiele: CREATE PROCEDURE resetname() MODIFIES SQL DATA update Personentab set name = NULL; CREATE FUNCTION maxgebdat () RETURNS Date CONTAINS SQL RETURN (select max(gebdat) from Personentab ); CREATE PROCEDURE updatedb ( vpersnr integer, vgebdat date, vort varchar(40)) MODIFIES SQL DATA BEGIN ATOMIC update Personentab set gebdat = vgebdat where persnr = vpersnr; update Adressentab set ort = vort where persnr = vpersnr; 25 END;

26 Routines Aufruf der Routines: CREATE PROCEDURE resetname() MODIFIES SQL DATA update Personentab set name = NULL; CALL resetname(); CREATE FUNCTION maxgebdat () RETURNS Date CONTAINS SQL RETURN (select max(gebdat) from Personentab ); select * from Personentab where gebdat < maxgebdat(); 26

27 PSM Ein Persistent Stored Module (PSM) ist ein Datenbankobjekt, das eine oder mehrere Prozeduren enthält und einen eindeutigen Namen besitzt. Syntax (vereinfacht): CREATE MODULE < modul-name > < SQL-Invoked Routine >; END MODULE; ALTER MODULE < modul-name > { ADD DROP } < modul contents >; DROP MODULE < modul-name; 27

28 PSM Beispiel: CREATE MODULE Test_Modul DECLARE Procedure resetname() modifies SQL data update Personentab set name = NULL; DECLARE Function maxgebdat () RETURNS Date CONTAINS SQL RETURN (select max(gebdat) from Personentab ); END MODULE; 28

29 PSM Im Zusammenhang mit PSM sind unter anderem die folgenden prozeduralen Sprachkonstrukte im Standard definiert, die dann in im Modul deklarierten Prozeduren oder Funktionen verwendet werden können: [ < label >: ] BEGIN [ [NOT] ATOMIC ] [ < variable declaration >;... ] [ < DECLARE Cursor statement >;... ] [ < handler declaration >;... ] [ < Assignment Statement >;... ] [ < program control statement >... ] [ < SQL statement >;... ] END [ < label > ] Default für die BEGIN... END Klammer ist NOT ATOMIC. Ist ATOMIC gesetzt, dürfen keine Transaktionsstatements vorkommen! 29

30 PSM Beispiel: create module Test declare procedure testproc() testproclabel: begin atomic declare v integer; set v = 27; while x < 50 do set v = x + 1; end while; insert into testtab (nr) values (v); end testproclabel; end module; 30

31 PSM Zum BEGIN... END Block: Im Deklarationsteil sind möglich: Variablen-, Cursor- oder Handler- Deklaration Variablendeklaration: DECLARE < var-name > < var-typ > [ DEFAULT < value > ]; Beispiel: DECLARE pi double default 3.14; 31

32 PSM Zum BEGIN... END Block: Program Control Statements Im Standard SQL-99 sind folgende Kontrollstrukturen definiert: IF Statement LEAVE Statement LOOP Statement WHILE Statement REPEAT Statement FOR Statement CASE Statement ITERATE Statement 32

33 PSM Zum BEGIN... END Block: Program Control Statements IF Statement: IF < condition > THEN < SQL statement list > [ ELSEIF < condition > THEN < SQL statement list > ] [ ELSE < SQL statement list > ] END IF; LEAVE Statement: LEAVE < labelname >; 33

34 PSM Zum BEGIN... END Block: Program Control Statements LOOP Statement: [ < labelname > : ] LOOP < SQL statement list> < assignment > END LOOP [ < labelname > ]; WHILE Statement: [ < labelname > :] WHILE < condition > DO < SQL statement list > < assignment > END WHILE [ < labelname > ]; 34

35 PSM Zum BEGIN... END Block: Program Control Statements REPEAT Statement: [ < labelname > : ] REPEAT < SQL statement list> < assignment > UNTIL < condition > END REPEAT [ < labelname > ]; FOR Statement: [ < labelname > :] FOR < loop variable > AS [ < cursor name > [ ASENSITIVE SENSITIVE INSENSITIVE ] ] CURSOR FOR < select statement > [ ORDER BY clause ] [ FOR Update clause] DO < SQL statement list > < assignments > END FOR [ < labelname > ]; 35

36 PSM Zum BEGIN... END Block: Program Control Statements CASE Statement: CASE WHEN < condition > THEN < statements > [ WHEN < condition > THEN < statements >... ] [ ELSE < statements > ] END CASE; ITERATE Statement: ITERATE < labelname >; (Das ITERATE Statement kann nur innerhalb eines Loops stehen und bewirkt, dass zum Beginn des Loops (identifiziert über den Labelnamen) zurückgesprungen wird und der Loop neu ausgeführt wird.) 36

37 PSM Zum BEGIN... END Block: CURSOR Cursordeklaration: DECLARE < cursor-name > [ < cursor sensitivity > ] [ SCROLL ] CURSOR FOR < cursor specification >; < cursor sensitivity >::= SENSITIVE INSENSITIVE ASENSITIVE < cursor specification >::= < select-statement > [ < order by clause > ] [ FOR { READ ONLY UPDATE [ OF < column list > ] ] SENSITIVE : arbeitet direkt auf der Tabelle des select-statements, d.h. Änderungen an dieser Tabelle sind für den Cursor sichtbar! INSENSITIVE : arbeitet mit einer Kopie der Tabelle des select-statements, d.h. Änderungen an dieser Tabelle sind für den Cursor nicht sichtbar! ASENSITIVE : Default! Ob mit einer Kopie gearbeitet wird und/oder Änderungen sichtbar sind, ist Implementierungs abhängig. 37

38 PSM Zum BEGIN... END Block: CURSOR Ist ein Cursor deklariert, kann im ausführbaren Teil mit den folgenden Operationen mit ihm gearbeitet werden: OPEN < cursorname >; FETCH [ <fetch orientation> ] FROM < cursorname > INTO < fetch variable list >; < fetch orientation >::= NEXT PRIOR FIRST LAST {ABSOLUTE RELATIVE } < value > Ist SCROLL gesetzt, sind alle fetch Orientierungen möglich. Sonst nur NEXT! CLOSE < cursorname >; 38

39 PSM Zum BEGIN... END Block: CURSOR Beispiel: BEGIN ATOMIC Declare c_test CURSOR for select name, vorname from personentab FOR UPDATE; Declare vname varchar(20); Declare vvname varchar(20); OPEN c_test; FETCH NEXT FROM c_test INTO vname, vvname; set vname = vname testname ; set vvname = vvname testvorname ; update personentab set name = vname, vorname = vvname where CURRENT OF c_test; END; close c_test; 39

40 PSM Zum BEGIN... END Block: Erläuterungen: CURSOR Der Beispielcursor hat als Ergebnistabelle alle Namen und Vornamen aus der Tabelle Personentab. Mit dem OPEN-Befehl wird das dem Cursor zugeordnete select Statement ausgeführt und ein Zeiger vor den ersten Datensatz der Ergebnistabelle gesetzt. Mit dem FETCH NEXT-Befehl wird hier der erste Datensatz in die Variablen vname und vvname eingefügt. Will man mit mehr Datensätzen arbeiten, muss man das FETCH in eine Schleife (LOOP) einbetten. Siehe später. Das update Statement ist ein sogenanntes positioniertes Update, d.h. da der Cursor FOR UPDATE gesetzt ist, kann im update Statement durch where CURRENT OF c_test auf den Datensatz Bezug 40 genommen werden, der gerade im Fokus des Cursors ist.

41 PSM Zum BEGIN... END Block: HANDLER (Exception handling) Handler Deklaration: DECLARE < handler type > HANDLER FOR < condition value list > < handler action >; < handler type > ::= CONTINUE EXIT UNDO < condition value list > ::= < value > [ {, < value > }... ] < value > ::= < sqlstate value > < condition name > SQLEXCEPTION SQLWARNING NOT FOUND < handler action > ::= < SQL statement > < assignment > 41

42 PSM Zum BEGIN... END Block: HANDLER (Exception handling) Beispiel: BEGIN Declare my_error CONDITION FOR ; Declare v char(12) DEFAULT okay ; Declare CONTINUE HANDLER FOR SET v = Overflow ; Declare EXIT HANDLER FOR my_error insert into protokoll(string) values ( Constraint Fehler ); Declare CONTINUE HANDLER FOR NOT FOUND SET v = Nix gefunden ; insert into Testtab1 (beschreibung) values( ); insert into Testtab2 (beschreibung) values(v); END; 42

43 PSM Zum BEGIN... END Block: HANDLER (Exception handling) Erläuterungen: Im ersten Declare Statement wird ein Nutzer-definierter Name für einen Wert von SQLSTATE deklariert (sqlstate ist eine 5 Zeichen lange Systemvariable, die den Zustand eines ausgeführten SQL Statements erfasst). Ist das Attribut beschreibung der Tabelle Testtab1 nur 5 Zeichen lang, wird durch das erste insert-statement eine Overflow-Exception ausgelöst, d.h. die Variable v erhält durch den Handler den Wert Overflow. Die Abarbeitung geht aber weiter, da es ein CONTINUE Handler ist! Wird während der Verarbeitung ein Constraint verletzt, wird der Handler für my_error ausgelöst und die Abarbeitung beendet (EXIT Handler). 43

44 Datenbanken: ORACLE: PL / SQL Der Datenbankhersteller ORACLE erlaubt die Verwendung aller Kontrollstrukturen in Triggern, Prozeduren und Funktionen. ORACLE kennt keine MODULEs, hier heißen sie PACKAGE. Die Erzeugung eines Package zerfällt in zwei Teile: CREATE PACKAGE... CREATE PACKAGE BODY... Die DECLARE Section muss vor dem BEGIN.. END - Block liegen. Das Exception-Handling wird in einem eigenen Block EXCEPTION innerhalb des BEGIN... END - Blocks formuliert. ORACLE stellt wesentlich mehr System-Exceptions zur Verfügung, als im Standard vorgesehen. 44

45 Datenbanken: ORACLE: PL / SQL In Prozeduren und Funktionen können lokale Variable deklariert werden, allerdings nur ohne das Schlüsselwort DECLARE! Hat eine Prozedur oder Funktion keine Parameter, darf keine Klammer hinter dem Namen stehen. Die CURSOR Deklaration hat eine andere Syntax. Der Quelltext zur Erzeugung eines PL/SQL Objekts muss in der letzten Zeile als einziges Zeichen einen Slash enthalten. Wird ein PL/SQL-Objekt mit Fehlern erstellt, kann man sich diese in der SQLPlus-Shell mit dem Befehl show errors anzeigen lassen. BEGIN ATOMIC... END ist nicht implementiert! 45

46 Datenbanken: ORACLE: PL / SQL Beispiele: Package create or replace package testpack as procedure Personselect; procedure Persondelete(vpersnr integer); end; / create or replace package body testpack as procedure Personselect is begin insert into testprotokoll (select persnr, vorname ' ' name from Person); end Personselect; procedure Persondelete(vpersnr integer) is begin delete from testprotokoll where persnr = vpersnr; end Persondelete; end testpack; / 46

47 Beispiele: Datenbanken: stored procedure ORACLE: PL / SQL create or replace procedure hauserein is i integer; Begin for i in loop insert into Personentab values(persnr_seq.nextval, 'Meier' i, 'Sabine' i, ' ' substr(i,1,2),'w'); end loop; commit; End; / create or replace procedure delbypersnr(ipersnr integer) is Begin delete from adressentab where persnr = ipersnr; delete from hobbies where persnr = ipersnr; delete from ausbildungen where persnr = ipersnr; delete from beruf where persnr = ipersnr; delete from Personentab where persnr = ipersnr; End; / 47

48 Beispiele: Datenbanken: Exception handling ORACLE: PL / SQL DECLARE c varchar2(40); name1 Personentab.name%TYPE; name2 Personentab.vorname%TYPE; zulang exception; BEGIN select name, vorname into name1, name2 from Personentab where name like 'Z%'; c := substr(name2,1,1) '.' name1; IF length(c) > 40 THEN RAISE zulang; END IF; insert into test(string) values(c); EXCEPTION WHEN NO_DATA_FOUND THEN insert into test(string) values('nix da'); WHEN TOO_MANY_ROWS THEN insert into test(string) values('zuviel da'); WHEN zulang THEN c:= substr(name2,1,1) '.' substr(name1,1,37); insert into test(string) values(c); WHEN OTHERS THEN insert into test(string) values('unbekannter Fehler aufgetreten'); END; / 48

49 Beispiele: Datenbanken: Cursor ORACLE: PL / SQL create or replace procedure setgehalt(i_zuwachs number, i_abnahme number) is cursor c_gehalt is select gehalt from beruf where beendet is null FOR UPDATE of gehalt; v_gehalt beruf.gehalt%type; Begin open c_gehalt; loop fetch c_gehalt into v_gehalt; exit when c_gehalt%notfound; IF v_gehalt <= 3000 THEN update beruf set gehalt = gehalt + i_zuwachs where CURRENT OF c_gehalt; ELSIF v_gehalt > 3000 THEN update beruf set gehalt = gehalt - i_abnahme where CURRENT OF c_gehalt; END IF; end loop; close c_gehalt; End; / 49

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München Kapitel 4 Dynamisches SQL Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München 2008 Thomas Bernecker, Tobias Emrich unter Verwendung der Folien des Datenbankpraktikums aus dem Wintersemester

Mehr

Funktion definieren Gibt Summe der Gehälter zurück. Aufruf in einem SQL-Statement

Funktion definieren Gibt Summe der Gehälter zurück. Aufruf in einem SQL-Statement Funktion definieren Gibt Summe der Gehälter zurück Aufruf in einem SQL-Statement Dr. Christian Senger Einführung PL/SQL 1 Procedures & Transaktionen CREATE OR REPLACE PROCEDURE write_log ( log_code IN

Mehr

Prozedurale Datenbank- Anwendungsprogrammierung

Prozedurale Datenbank- Anwendungsprogrammierung Idee: Erweiterung von SQL um Komponenten von prozeduralen Sprachen (Sequenz, bedingte Ausführung, Schleife) Bezeichnung: Prozedurale SQL-Erweiterung. In Oracle: PL/SQL, in Microsoft SQL Server: T-SQL.

Mehr

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R 1.008. Vorlesung #6. SQL (Teil 4)

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R 1.008. Vorlesung #6. SQL (Teil 4) Vorlesung #6 SQL (Teil 4) Fahrplan Besprechung der Übungsaufgaben Einschub: Self Joins (relevant fürs Praktikum) Dynamische Intergritätsbedingungen, das Trigger - Konzept von Oracle Prozedurale Erweiterungen,

Mehr

6. Datenintegrität. Integritätsbedingungen

6. Datenintegrität. Integritätsbedingungen 6. Integritätsbedingungen dienen zur Einschränkung der Datenbankzustände auf diejenigen, die es in der realen Welt tatsächlich gibt. sind aus dem erstellten Datenmodell ableitbar (semantisch) und können

Mehr

Datenbanksysteme. Dominic Pacher. Datenbanken und Informationssysteme (DBIS) Institut für Informatik Universität Innsbruck. dbis-informatik.uibk.ac.

Datenbanksysteme. Dominic Pacher. Datenbanken und Informationssysteme (DBIS) Institut für Informatik Universität Innsbruck. dbis-informatik.uibk.ac. Datenbanksysteme Dominic Pacher Datenbanken und Informationssysteme (DBIS) Institut für Informatik Universität Innsbruck dbis-informatik.uibk.ac.at 1 Übersicht Was passiert in den kommenden 90 Minuten?

Mehr

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL Betreuer: Sascha Kriewel, Tobias Tuttas Raum: LF 230 Bearbeitung: 26., 27. und 29. Juni 2006 Datum Team (Account) Vorbereitung Präsenz Aktuelle Informationen, Ansprechpartner und Material unter: http://www.is.inf.uni-due.de/courses/dbp_ss07/index.html

Mehr

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion Überblick über Stored Functions Funktionen Eine Funktion ist ein benannter PL/SQL- Block, der einen Wert zurückgibt. Eine Funktion kann in der Datenbank als Objekt zur wiederholbaren Ausführung gespeichert

Mehr

Kapitel 4 Dynamisches SQL

Kapitel 4 Dynamisches SQL Kapitel 4 Dynamisches SQL Flien zum Datenbankpraktikum Wintersemester 2012/13 LMU München 2008 Thmas Bernecker, Tbias Emrich 2010 Tbias Emrich, Erich Schubert unter Verwendung der Flien des Datenbankpraktikums

Mehr

Datenbanksysteme I Datenbankprogrammierung. 15.6.2009 Felix Naumann

Datenbanksysteme I Datenbankprogrammierung. 15.6.2009 Felix Naumann Datenbanksysteme I Datenbankprogrammierung 15.6.2009 Felix Naumann SQL mit einer Programmiersprache verbinden 2 Embedded SQL Kombiniert SQL mit 7 Programmiersprachen ADA, C, Cobol, Fortran, M, Pascal,

Mehr

Kapitel 4 Dynamisches SQL

Kapitel 4 Dynamisches SQL Kapitel 4 Dynamisches SQL Flien zum Datenbankpraktikum Wintersemester 2010/11 LMU München 2008 Thmas Bernecker, Tbias Emrich unter Verwendung der Flien des Datenbankpraktikums aus dem Wintersemester 2007/08

Mehr

PL/pgSQL. VU Datenbanksysteme. Reinhard Pichler

PL/pgSQL. VU Datenbanksysteme. Reinhard Pichler PL/pgSQL VU Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester 2015/16 Gliederung Einführung

Mehr

Struktur von PL/SQL. Oracle PL/SQL Die Programmiersprache von Oracle. Ein Beispiel. Bildschirmausgabe. Using Oracle PL/SQL.

Struktur von PL/SQL. Oracle PL/SQL Die Programmiersprache von Oracle. Ein Beispiel. Bildschirmausgabe. Using Oracle PL/SQL. Oracle PL/SQL Die Programmiersprache von Oracle Struktur von PL/SQL Using Oracle PL/SQL http://www-db.stanford.edu/~ullman/fcdb/oracle/or-plsql.html Constraints and Triggers http://www-db.stanford.edu/~ullman/fcdb/oracle/or-triggers.html

Mehr

Views in SQL. 2 Anlegen und Verwenden von Views 2

Views in SQL. 2 Anlegen und Verwenden von Views 2 Views in SQL Holger Jakobs bibjah@bg.bib.de, holger@jakobs.com 2010-07-15 Inhaltsverzeichnis 1 Wozu dienen Views? 1 2 Anlegen und Verwenden von Views 2 3 Schreibfähigkeit von Views 3 3.1 Views schreibfähig

Mehr

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz Oracle 12c: Neuerungen in PL/SQL Roman Pyro DOAG 2014 Konferenz Herrmann & Lenz Services GmbH Herrmann & Lenz Solutions GmbH Erfolgreich seit 1996 am Markt Firmensitz: Burscheid (bei Leverkusen) Beratung,

Mehr

2. Datenbank-Programmierung

2. Datenbank-Programmierung 2. Datenbank-Programmierung SQL ist eingeschränkt bezüglich der algorithmischen Mächtigkeit, z.b. Berechnung einer transitiven Hülle ist in Standard-SQL nicht möglich. Die Einschränkung ist von Bedeutung

Mehr

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt. Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Datenbanken und Informationssysteme II Szenario: Projektverwaltung. Es gibt Projekte, Projektleiter, Mitarbeiter und ihre Zuordnung zu Projekten.

Mehr

Übung PL/SQL Trigger Lösungen

Übung PL/SQL Trigger Lösungen Übung PL/SQL Trigger Lösungen 1) Gebe das aktuelle Datum aus. Wofür steht dual? Ändere das Datum für Deine aktuelle Session auf das Format Jahr (4 Stellen) Monat (2 Stellen) Tag (2 Stellen)[Leerzeichen]Stunde

Mehr

SQL (Structured Query Language) Schemata Datentypen

SQL (Structured Query Language) Schemata Datentypen 2 SQL Sprachelemente Grundlegende Sprachelemente von SQL. 2.1 Übersicht Themen des Kapitels SQL Sprachelemente Themen des Kapitels SQL (Structured Query Language) Schemata Datentypen Im Kapitel SQL Sprachelemente

Mehr

Softwareentwicklung mit JAVA EE

Softwareentwicklung mit JAVA EE Softwareentwicklung mit JAVA EE Grundlagen: Datenbankprogrammierung Literatur T. Kudraß (Hrsg.): Taschenbuch Datenbanken, Hanser, 2007 DB-Programmierung-2 Einbettungstechniken Einbettung in 3GL Embedded

Mehr

Oracle Datenbankprogrammierung mit PL/SQL Grundlagen

Oracle Datenbankprogrammierung mit PL/SQL Grundlagen Oracle Datenbankprogrammierung mit PL/SQL Grundlagen Seminarunterlage Version: 12.05 Version 12.05 vom 29. Januar 2015 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt-

Mehr

Einführung in PL/SQL

Einführung in PL/SQL Einführung in PLSQL Prozedurale Erweiterung der Sprache SQL um Elemente wie Variablen, Schleifen, Bedingungen, Ausnahmebehandlung Code läuft innerhalb der Datenbank ab und ist deshalb sehr performant Zusätzlich

Mehr

Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel

Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel Schlagworte Autor: Klaus Friemelt, MT AG dynamisches BULK SQL, VARCHAR2-indizierte PL/SQL-Tabellen Einleitung Mit den letzten

Mehr

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1 Kapitel 9 Embedded SQL Vorlesung Datenbanken 1 Embedded SQL (siehe auch [Date00]) Arbeitsweise ähnlich PL/SQL, allerdings: Normale Programmiersprache mit eingestreuten SQL-Befehlen und anderen Befehlen

Mehr

11 Anwendungsprogrammierung

11 Anwendungsprogrammierung 11 11 11.1 Programmiersprachenanbindung 11.2 11.3 183 11 Programmiersprachenanbindung Programmiersprachenanbindung Kopplungsarten: prozedurale oder CALL-Schnittstellen (call level interface) Beispiele:

Mehr

NoSQL mit Postgres 15. Juni 2015

NoSQL mit Postgres 15. Juni 2015 Tag der Datenbanken 15. Juni 2015 Dipl.-Wirt.-Inform. Agenda l Vorstellung l Marktübersicht l Warum PostgreSQL? l Warum NoSQL? l Beispielanwendung Seite: 2 Vorstellung Dipl.-Wirt.-Inform. [1990] Erste

Mehr

Einführung in PL/SQL

Einführung in PL/SQL Einführung in PL/SQL Procedural Language/Structured Query Language Prozedurale Erweiterung der Sprache SQL für Elemente wie Variablen, Schleifen, Bedingungen, Ausnahmebehandlung Dr. Christian Senger Einführung

Mehr

Arbeit mit zusammengesetzten Datentypen

Arbeit mit zusammengesetzten Datentypen Arbeit mit zusammengesetzten Datentypen Zusammengesetzte Datentypen Typen: PL/SQL RECORDS PL/SQL TABELLEN Enthalten interne Komponenten Sind wiederverwendbar Copyright Oracle Corporation, 1998. All rights

Mehr

Übungsblatt 8- Lösungsvorschlag

Übungsblatt 8- Lösungsvorschlag Universität Innsbruck - Institut für Informatik Prof. Günther Specht, R.Binna, N.Krismer, M. Tschuggnall 30. November 2012 Proseminar Datenbanksysteme Übungsblatt 8- Lösungsvorschlag Aufgabe 1 (Trigger)

Mehr

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009 Hochschule Darmstadt DATENBANKEN Fachbereich Informatik Praktikum 3 Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009 PL/SQL Programmierung Anwendung des Cursor Konzepts und Stored Procedures Und Trigger

Mehr

Datenbanken 1 und Objektorientierte Datenbanken

Datenbanken 1 und Objektorientierte Datenbanken Struktur eines PLSQL Blocks DECLARE Definition und Initialisierung 1 der im Block benutzten Variablen und Cursors EXCEPTION Wertzuweisungen, Operationen

Mehr

6. Trigger Charakterisierung von Triggern. 6. Trigger. Trigger definieren automatische Reaktionen auf Ereignisse, die durch Datenmanupilationen

6. Trigger Charakterisierung von Triggern. 6. Trigger. Trigger definieren automatische Reaktionen auf Ereignisse, die durch Datenmanupilationen 6. Trigger Charakterisierung von Triggern 6. Trigger Trigger definieren automatische Reaktionen auf Ereignisse, die durch Datenmanupilationen auf einer Relation ausgelöst werden. Trigger stellen eine einfache

Mehr

PL/pgSQL. VL Datenbanksysteme. Ingo Feinerer

PL/pgSQL. VL Datenbanksysteme. Ingo Feinerer PL/pgSQL VL Datenbanksysteme Ingo Feinerer Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Gliederung Einführung PL/pgSQL-Programmteile

Mehr

Transaktionen in der Praxis. Dr. Karsten Tolle

Transaktionen in der Praxis. Dr. Karsten Tolle Transaktionen in der Praxis Dr. Karsten Tolle Praxisbeispiel in Java Connection con = null; try { con = DriverManager.getConnection("jdbc:db2:sample"); } catch (Exception e) { e.printstacktrace(); } con.setautocommit(false);

Mehr

Beispiel zur referentiellen Integrität

Beispiel zur referentiellen Integrität 3. Der SQL-Standard 3.14. Integrität und Trigger Seite 1 Beispiel zur referentiellen Integrität CREATE TABLE T1( k1 NUMERIC NOT NULL PRIMARY KEY); CREATE TABLE T2( k2 NUMERIC NOT NULL PRIMARY KEY, k1 NUMERIC,

Mehr

Entwicklungsumgebung für die Laborübung

Entwicklungsumgebung für die Laborübung Entwicklungsumgebung für die Laborübung VU Datenbanksysteme Wolfgang Fischl Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester

Mehr

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO; phpmyadmin SQL Dump version 3.2.4 http://www.phpmyadmin.net Host: localhost Erstellungszeit: 13. April 2011 um 18:44 Server Version: 5.1.41 PHP-Version: 5.3.1 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; /*!40101

Mehr

Dipl. Inf. Eric Winter. PostgreSQLals HugeData Storage Ein Erfahrungsbericht

Dipl. Inf. Eric Winter. PostgreSQLals HugeData Storage Ein Erfahrungsbericht Dipl. Inf. Eric Winter Entwicklungsleiter PTC GPS-Services GmbH PostgreSQLals HugeData Storage Ein Erfahrungsbericht Inhalt 1. Problembeschreibung 2. Partielle Indexierung 3. Partitionierung 1. Vererbung

Mehr

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Trigger. Andreas Schmidt Trigger 1/25

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Trigger. Andreas Schmidt Trigger 1/25 Trigger Andreas Schmidt Trigger 125 Trigger Konzept, um automatisch auf vordefinierte Ereignisse in der Datenbank zu reagieren Trigger sind mit Datenbanktabelle verknüpft Auslösung durch DML Befehle INSERT,

Mehr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin PhpMyAdmin = grafsches Tool zur Verwaltung von MySQL-Datenbanken Datenbanken erzeugen und löschen Tabellen und Spalten einfügen,

Mehr

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo. Mengenvergleiche: Mehr Möglichkeiten als der in-operator bietet der θany und der θall-operator, also der Vergleich mit irgendeinem oder jedem Tupel der Unteranfrage. Alle Konten außer das, mit dem größten

Mehr

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS 2015. Metadaten

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS 2015. Metadaten Fakultät für Informatik & Wirtschaftsinformatik Metadaten Metadaten sind Daten über Daten Data-Dictionary speichert Informationen über die Struktur der Daten, z.b.: Tabellen, Spalten, Datentypen Primär-

Mehr

Die Datenmanipulationssprache SQL

Die Datenmanipulationssprache SQL Die Datenmanipulationssprache SQL Daten eingeben Daten ändern Datenbank-Inhalte aus Dateien laden Seite 1 Data Manipulation Language A DML statement is executed when you Add new rows to a table Modify

Mehr

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager Datensatzhistorie mit dem SQL Server 2000 und 2005 Datensatzhistorie mit dem SQL Server 2000 und 2005-2 - Inhalt

Mehr

Inhalt: 1. Einleitung... S. 1 2. Stored Procedures... S. 2 3. Stored Functions... S. 4 4. Procedures ändern und anzeigen lassen... S. 5 5.

Inhalt: 1. Einleitung... S. 1 2. Stored Procedures... S. 2 3. Stored Functions... S. 4 4. Procedures ändern und anzeigen lassen... S. 5 5. Inhalt: 1. Einleitung... S. 1 2. Stored Procedures... S. 2 3. Stored Functions... S. 4 4. Procedures ändern und anzeigen lassen... S. 5 5. Cursor, Ablaufsteuerung, DECLARE-Statements... S. 6 5.1. DECLARE-Statements...

Mehr

Datenbanksysteme I Übung: JDBC. Jana Bauckmann

Datenbanksysteme I Übung: JDBC. Jana Bauckmann Datenbanksysteme I Übung: JDBC Jana Bauckmann Wo reicht SQL alleine nicht? 2 Web-Anwendungen Daten übersichtlich und schön präsentieren Komplizierte Fragestellungen Sind sich 2 Tupel ähnlich? Duplikaterkennung

Mehr

Grundlagen der Informatik 2

Grundlagen der Informatik 2 Grundlagen der Informatik 2 Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Gliederung 1. Einführung

Mehr

Oracle SQL. Seminarunterlage. Version vom

Oracle SQL. Seminarunterlage. Version vom Seminarunterlage Version: 12.16 Version 12.16 vom 12. Oktober 2017 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012 Isolationsstufen für Transaktionen / Sicherheit Dr. Karsten Tolle Dienstag 31. Januar 2012 Praxisbeispiel in Java Connection con = null; try { con = DriverManager.getConnection("jdbc:db2:sample"); } catch

Mehr

Oracle: Abstrakte Datentypen:

Oracle: Abstrakte Datentypen: Oracle: Abstrakte Datentypen: Oracle bietet zwei mögliche Arten um abstrakte Datentypen zu implementieren: Varying Array Nested Table Varying Array (kunde) kdnr kdname gekaufteart 1 Mustermann 1 4 5 8

Mehr

Vorbereitungen zum 3. Praktikum (PL/SQL):

Vorbereitungen zum 3. Praktikum (PL/SQL): Vorbereitungen zum 3. Praktikum (PLSQL): SQL ist eine nicht-prozedurale Sprache der 4. Generation, die es nicht erlaubt, Elemente von 3.-Generation-Sprachen (Schleifen, Verzweigungen, etc.) zu benutzen.

Mehr

DB2 SQL, der Systemkatalog & Aktive Datenbanken

DB2 SQL, der Systemkatalog & Aktive Datenbanken DB2 SQL, der Systemkatalog & Aktive Datenbanken Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1 Ziele Auf DB2 Datenbanken zugreifen DB2 Datenbanken benutzen Abfragen ausführen Den Systemkatalog

Mehr

Ausnahmebehandlung. Ausnahmebehandlung mit PL/SQL. Ausnahmetypen. Ausnahmebehandlung

Ausnahmebehandlung. Ausnahmebehandlung mit PL/SQL. Ausnahmetypen. Ausnahmebehandlung behandlung mit PL/SQL behandlung Was ist eine? Anzeige von Fehlern Wie werden sie angezeigt? Ein Oracle error erscheint. Die Anzeige ist explizit. Wie behandelt man es? Abfangen mit einem Programm. Weiterleiten

Mehr

<Insert Picture Here> Security-Basics. Privilegien, Rollen, SQL und PL/SQL - inkl. 12c-Update. Carsten Czarski, ORACLE Deutschland B.V. Co.

<Insert Picture Here> Security-Basics. Privilegien, Rollen, SQL und PL/SQL - inkl. 12c-Update. Carsten Czarski, ORACLE Deutschland B.V. Co. Security-Basics Privilegien, Rollen, SQL und PL/SQL - inkl. 12c-Update Carsten Czarski, ORACLE Deutschland B.V. Co. KG Themen Rechte, Rollen und PL/SQL: Grundsätzliches Invokers vs.

Mehr

Klausur PI Datenbanken II vom Name: Praktische Informatik (Krägeloh)

Klausur PI Datenbanken II vom Name: Praktische Informatik (Krägeloh) Versehen Sie jedes Aufgabenblatt/-blätter mit Ihrem Namen und geben es mit ab! Seite 1 Aufgabe 1: ( 30 Punkte) 1) Ein Entity-Set E1 wird in die Subklassen S1 und S2 spezialisiert. Was bedeutet die Aussage:

Mehr

Kuriositäten in der Oracle-Datenbank

Kuriositäten in der Oracle-Datenbank Kuriositäten in der Oracle-Datenbank 19. Deutsche ORACLE-Anwenderkonferenz Do. 16.11., 14.00 Uhr, Variohalle 1 Dr. Peter Alteheld, Systemberater MT AG, Bereich Solutions Development, FB Plattform Services

Mehr

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern Thema Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern Referent: Frank Sanders Seite 1 Inhalt Der Vortrag hat einen sehr kurzen Einleitungsteil der sich mit Objektorientierung

Mehr

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language) Einführung in SQL 1. Grundlagen Structured Query Language Viele Dialekte Unterteilung: i. DDL (Data Definition Language) ii. iii. DML (Data Modifing Language) DRL (Data Retrival Language) 1/12 2. DDL Data

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

4.14.3 Bedingungen über Werte. 4.14.4 Statische Integrität. CHECK-Klausel

4.14.3 Bedingungen über Werte. 4.14.4 Statische Integrität. CHECK-Klausel 4.14.3 Bedingungen über Werte 4.14.4 Statische Integrität Zu jeder Tabelle werden typischerweise ein Primärschlüssel und möglicherweise weitere Schlüssel festgelegt (UNIQUE-Klausel). In jeder Instanz zu

Mehr

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung Inhalt Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle Daten und Tabellen Normalisierung, Beziehungen, Datenmodell SQL - Structured Query Language Anlegen von Tabellen Datentypen (Spalten,

Mehr

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung 6. Datenintegrität Motivation Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung nur sinnvolle Attributwerte (z.b. keine negativen Semester) Abhängigkeiten

Mehr

Prozedurale SQL-Erweiterungen

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

Mehr

Trigger schreiben. Überblick über Trigger. Datenbank Trigger: Beispiel. Aufbau eines Triggers

Trigger schreiben. Überblick über Trigger. Datenbank Trigger: Beispiel. Aufbau eines Triggers Überblick über Trigger Trigger schreiben Ein Trigger ist ein PL/SQL Block, der implizit aufgerufen wird, wenn ein bestimmtes Ereignis eintritt. Ein Trigger kann ein Datenbanktrigger oder ein Anwendungstrigger

Mehr

3.17 Zugriffskontrolle

3.17 Zugriffskontrolle 3. Der SQL-Standard 3.17. Zugriffskontrolle Seite 1 3.17 Zugriffskontrolle Datenbanken enthalten häufig vertrauliche Informationen, die nicht jedem Anwender zur Verfügung stehen dürfen. Außerdem wird man

Mehr

Datenbanksysteme 2013

Datenbanksysteme 2013 Datenbanksysteme 2013 Kapitel 8: Datenintegrität Vorlesung vom 14.05.2013 Oliver Vornberger Institut für Informatik Universität Osnabrück Datenintegrität Statische Bedingung (jeder Zustand) Dynamische

Mehr

SQL and PL/SQL unleashed. Neuheiten bei Oracle 11g und Oracle 12c im Bereich SQL und PL/SQL

SQL and PL/SQL unleashed. Neuheiten bei Oracle 11g und Oracle 12c im Bereich SQL und PL/SQL . Neuheiten bei Oracle 11g und Oracle 12c im Bereich SQL und PL/SQL Johannes Gritsch Themenübersicht Neue Scheduler Job Typen SQL_SCRIPT und BACKUP_SCRIPT SQL RowLimit: PERCENT und TIES WITH-Klausel mit

Mehr

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen! Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen! Grundstrukturen: Sub [name]([übergabe]) End Sub [Übergabe] ist

Mehr

VO Datenmodellierung. Katrin Seyr

VO Datenmodellierung. Katrin Seyr Datenintegrität Datenintegrität VO Datenmodellierung Katrin Seyr Institut für Informationssysteme Technische Universität Wien Katrin Seyr Seite 1 Datenintegrität 1. Überblick Überblick 1 Überblick 2 Integritätsbedingungen

Mehr

SQL. Fortgeschrittene Konzepte Auszug

SQL. Fortgeschrittene Konzepte Auszug SQL Fortgeschrittene Konzepte Auszug Levels SQL92 Unterteilung in 3 Levels Entry Level (i.w. SQL89) wird von nahezu allen DBS Herstellern unterstützt Intermediate Level Full Level SQL DML 2-2 SQL92 behebt

Mehr

Von der passiven zur aktiven Datenbank II. Trigger Views Prozerdurale SQL-Erweiterungen

Von der passiven zur aktiven Datenbank II. Trigger Views Prozerdurale SQL-Erweiterungen Von der passiven zur aktiven Datenbank II Trigger Views Prozerdurale SQL-Erweiterungen Konzept der aktiven DB ECA-Prinzip: Event, Condition, Action Spezifizierte DB-Zustände Ereignis ggf. automatische

Mehr

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann. JDBC in 5 Schritten JDBC (Java Database Connectivity) ist eine Sammlung von Klassen und Schnittstellen, mit deren Hilfe man Verbindungen zwischen Javaprogrammen und Datenbanken herstellen kann. 1 Einrichten

Mehr

Objektrelationale und erweiterbare Datenbanksysteme

Objektrelationale und erweiterbare Datenbanksysteme Objektrelationale und erweiterbare Datenbanksysteme Erweiterbarkeit SQL:1999 (Objekt-relationale Modellierung) In der Vorlesung werden nur die Folien 1-12 behandelt. Kapitel 14 1 Konzepte objekt-relationaler

Mehr

Transaktionen in Praxis. Dr. Karsten Tolle Vorl

Transaktionen in Praxis. Dr. Karsten Tolle Vorl Transaktionen in Praxis Dr. Karsten Tolle Vorl. 13.06.2017 Probleme bei Transaktionen Lost Update und Inconsistent Retrieval Sichtweise vom Benutzer Auszug aus SQL 92 1) P1 ("Dirty read"): SQL-transaction

Mehr

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023 Kapitel 33 Der xml-datentyp In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023 995 996 Kapitel 33: Der xml-datentyp Eine der wichtigsten

Mehr

Gesicherte Prozeduren

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.

Mehr

Inhalt. Einbettungstechniken für SQL. 1. Datenbank-Programmierung. Statische Einbettung

Inhalt. Einbettungstechniken für SQL. 1. Datenbank-Programmierung. Statische Einbettung Vorbemerkungen Inhalt Einbettungstechniken für SQL 1. Datenbankprogrammierung auf der Client-Seite: Embedded SQL, JDBC und SQLJ 2. Datenbankprogrammierung auf der Server-Seite: Stored Procedures 3. Erweiterbarkeit

Mehr

Geschäftslogik in die Datenbank Umstellung eines Kernbanksystems

Geschäftslogik in die Datenbank Umstellung eines Kernbanksystems Geschäftslogik in die Datenbank Umstellung eines Kernbanksystems Michael Meyer Berenberg Bank Hamburg Schlüsselworte: PL/SQL, Objektorientierung, Oracle Types, XML, Zentralisierung der Geschäftslogik,

Mehr

Prozeduren und Trigger in Datenbanken

Prozeduren und Trigger in Datenbanken Prozeduren und Trigger in Datenbanken Holger Jakobs bibjah@bg.bib.de 2012-06-25 Prozeduren (stored procedures) bringen bei Datenbanken prinzipiell dasselbe, was sie bei gewöhnlichen Programmiersprachen

Mehr

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL Datenmodifikation mit SQL Folie 45 SQL - Datenmodifikation Einfügen INSERT INTO Relation [(Attribut, Attribut,...)] VALUES (Wert, Wert,...) INSERT INTO Relation [(Attribut, Attribut,...)] SFW-Anfrage Ändern

Mehr

Explizite Cursor. Cursor. Steuerung des expliziten Cursors. Explizite Cursor Funktionen

Explizite Cursor. Cursor. Steuerung des expliziten Cursors. Explizite Cursor Funktionen Explizite Jedes SQL Statement, das der Oracle Server ausführt, hat einen individuellen, der verbunden ist mit: Implizitem : Declariert für alle DML-Statements und PL/SQL SELECT Statements. Explizitem :

Mehr

Anzeige des Java Error Stack in Oracle Forms

Anzeige des Java Error Stack in Oracle Forms Anzeige des Java Error Stack in Oracle Forms (Version 2.0) Juni 2008 Autoren: Jürgen Menge / Thomas Robert Seite 1 von 7 Oracle Forms bietet seit der Version 6i die Möglichkeit, serverseitig Java-Klassen

Mehr

Entwicklungsumgebung für die Laborübung

Entwicklungsumgebung für die Laborübung Entwicklungsumgebung für die Laborübung VL Datenbanksysteme Ingo Feinerer Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Gliederung

Mehr

Isolationsstufen für Transaktionen. Dr. Karsten Tolle

Isolationsstufen für Transaktionen. Dr. Karsten Tolle Isolationsstufen für Transaktionen Dr. Karsten Tolle Probleme bei Transaktionen Gewährleistung der Isolation Sperren kein Lost Update Read 1 (Accounts[13]) Read 2 (Accounts[13]) Write 2 (Accounts[13],101.000)

Mehr

Übung Datenbanksysteme I JDBC. Thorsten Papenbrock

Übung Datenbanksysteme I JDBC. Thorsten Papenbrock Übung Datenbanksysteme I JDBC Thorsten Papenbrock Motivation: Grenzen von SQL 2 1. Bedingte Anweisungen Erhöhe das Gehalt eines Arbeitsnehmers um 2%, falls er eine Belobigung erhalten hat 2. Darstellung

Mehr

Übung Datenbanksysteme I JDBC. Thorsten Papenbrock

Übung Datenbanksysteme I JDBC. Thorsten Papenbrock Übung Datenbanksysteme I JDBC Thorsten Papenbrock Motivation: Grenzen von SQL 2 1. Bedingte Anweisungen Erhöhe das Gehalt eines Arbeitsnehmers um 2%, falls er eine Belobigung erhalten hat 2. Darstellung

Mehr

5.3 Datenänderung/-zugriff mit SQL (DML)

5.3 Datenänderung/-zugriff mit SQL (DML) 5.3 Datenänderung/-zugriff mit SQL (DML) Hinweis: - DML-Anweisungen sind mengenorientiert - Mit einer Anweisungen kann mehr als ein Tupel eingefügt, geändert, gelöscht oder gelesen werden Benutzungs- und

Mehr

Sructred Query Language

Sructred Query Language Sructred Query Language Michael Dienert 11. November 2010 Inhaltsverzeichnis 1 Ein kurzer Versionsüberblick 1 2 SQL-1 mit einigen Erweiterungen aus SQL-92 2 3 Eine Sprache zur Beschreibung anderer Sprachen

Mehr

Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1 Kapitel 10 JDBC und SQLJ 1 JDBC und SQLJ Bisher: Einbettung von SQL (statisch bzw. dynamisch) in C, C++, COBOL, ADA (embedded SQL) bzw. prozedurale Erweiterungen für SQL in Oracle (PL/SQL) Was ist mit

Mehr

SQL: statische Integrität

SQL: statische Integrität SQL: statische Integrität.1 SQL: statische Integrität Im allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen die der Datenbank bekannten Integritätsbedingungen erfüllen. Integritätsbedingungen

Mehr

Prof. Dr.-Ing. Wolfgang Lehner. Nutzerdefinierte Funktionen und Stored Procedures

Prof. Dr.-Ing. Wolfgang Lehner. Nutzerdefinierte Funktionen und Stored Procedures Prof. Dr.-Ing. Wolfgang Lehner 4. Nutzerdefinierte Funktionen und Stored Procedures Roadmap intern intern/extern extern SQL UDF Trigger SQL SP XQUERY ext. UDF ext. SP SQLJ Embedded SQL JDBC ODBC OLE.NET

Mehr

Datenbanken: SQL. SQL: Structured Query Language. Anfragesprache für relationale Datenbanksysteme

Datenbanken: SQL. SQL: Structured Query Language. Anfragesprache für relationale Datenbanksysteme SQL: Structured Query Language Anfragesprache für relationale Datenbanksysteme Zur Erinnerung: Relationale Datenbanksysteme speichern die Daten in Tabellen (Relationen): Zeilen: einzelne Objekte der Realität

Mehr

10.6 Programmier-Exits für Workitems

10.6 Programmier-Exits für Workitems 10.6 Programmier-Exits für Workitems 279 10.6 Programmier-Exits für Workitems 10.6.1 Das Interface IF_SWF_IFS_WORKITEM_EXIT Am Schritt einer Workflow-Definition im Reiter»Programmier-Exits«können verschiedene

Mehr

Eigene Funktionen innerhalb von pgsql

Eigene Funktionen innerhalb von pgsql Eigene Funktionen innerhalb von pgsql Michael Dienert 25. November 2015 1 Warum noch eine Programmiersprache? SQL ist ein Standard, der von praktisch allen relationalen Datenbank-Servern als Abfragesprache

Mehr

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten Einführung in SQL Die Sprache SQL (Structured Query Language) ist eine Programmiersprache für relationale Datenbanksysteme, die auf dem ANSI-SQL-Standard beruht. SQL wird heute von fast jedem Datenbanksystem

Mehr

10. Programmieren in SQL

10. Programmieren in SQL 10. Programmieren in SQL Inhalt 10.1 Motivation 10.2 Prozedurale Erweiterungen von SQL 10.3 Gespeicherte Prozeduren 10.4 Benutzerdefinierte Funktionen 10.5 Verwendung anderer Programmiersprachen 2 10.1

Mehr

8 Zugriffstypen ( Zeiger )

8 Zugriffstypen ( Zeiger ) 8 Zugriffstypen ( Zeiger ) 1. Zugriffstypen, die auf Daten in einem Storage Pool zeigen Heap. 2. Allgemeine Zugriffstypen, die auf (mehr oder weniger) beliebige Daten zeigen. 3. Zugriffsparameter für Unterprogramme

Mehr

IBM Informix SQL. Seminarunterlage. Version 11.04 vom

IBM Informix SQL. Seminarunterlage. Version 11.04 vom Seminarunterlage Version: 11.04 Version 11.04 vom 27. April 2015 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

Datenbanken: Datenintegrität. www.informatikzentrale.de

Datenbanken: Datenintegrität. www.informatikzentrale.de Datenbanken: Datenintegrität Definition "Datenkonsistenz" "in der Datenbankorganisation (...) die Korrektheit der gespeicherten Daten im Sinn einer widerspruchsfreien und vollständigen Abbildung der relevanten

Mehr

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten. Lehrstuhl für Datenbanken und Informationssysteme Wintersemester 1999/2000 Universität Augsburg, Institut für Informatik 25. Februar 2000 Prof. Dr. Werner Kießling A. Leubner, M. Wagner Datenbanksysteme

Mehr