Geschäftslogik in der Datenbank

Größe: px
Ab Seite anzeigen:

Download "Geschäftslogik in der Datenbank"

Transkript

1 Geschäftslogik in der Datenbank Architektur und Objektorientierte PL/SQL-Programmierung Andriy Terletskyy Lead Database Architect Hamburg,

2 Geschäftslogik Geschäftslogik (engl. Business Logic, auch Anwendungslogik) ist ein abstrakter Begriff in der Softwaretechnik, der eine Abgrenzung der durch die Aufgabenstellung selbst motivierten Logik eines Softwaresystems von der technischen Implementierung zum Ziel hat. Allerdings ist der Begriff unscharf, da eine klare Trennung oft nicht möglich ist. Mehrfache BL-Umsetzung Datenbank Abhängigkeit Datenverarbeitungs- und Datenerfassungslogik FAT-Client Java Cobol ASP.NET Oracle EE ist mehr als eine Datenbank (Speicherort) SQL und PL/SQL Engine DBMS-Packages Object Types Daten-Import Type Mapping (Java&.NET) JPublisher, SQLData, STRUCT, ODP.NET Datenbank Geschäftslogik in der Datenbank

3 Datenbanken Architektur E-Börsen Makler Handelssystem FIX SWIFT Data-Warehouse Log Log Log log Log Bestandstamm GattungStamm Log Transaktionen Log Log Bestandstamm GattungStamm KundenStamm Transaktionen Ausführung Order KundenStamm Ausführung Order Abrechnung Buchung Back-Office Portfolio Bestandstamm GattungStamm KundenStamm (Data-HUBs) Transaktionen Aufrührung Order Buchung Abrechnung Buchung Reporting Bestandstamm GattungStamm KundenStamm Geschäftslogik in der Datenbank

4 Virtuelle ODBMS auf Basis RDBMS (DOAG Konferenz 2004) BO-TYPES Aufbau OO-ROWTYPE (ROWTYPE + DML, DEFAULT, TO_STRING, DBMS_OUTPUT- Methoden, PK/UK- Konstruktoren, ROW_LOCK) BO-Typen (Vererbung, Aggregation, Assoziation) OO-ROWTYPES Verwendung Methoden statt üblicher DML- Anweisungen Datennormalisierung über RDBMS PK/UK- Konstruktoren - ziehen referenziertes Objekt über relationale ID (DEREF- Analogon) RDBMS Generator Java-Class PL/SQL-Wrapper DDL-Trigger mit asynchroner Queue Geschäftslogik in der Datenbank

5 Tabelle und OO-Rowtype (Beispiel) CREATE OR REPLACE TYPE ROW_STATUS UNDER GLOBAL.TYPE_OBJECT ( -- attributes STATUS_ID NUMBER(12), KURZBEZEICHNUNG VARCHAR2(50), ERSTELLT_ZST DATE, ERSTELLT_ID VARCHAR2(30), GEAENDERT_ZST DATE, GEAENDERT_ID NUMBER(12), GEAENDERT_ZAEHLER NUMBER(10), BEZEICHNUNG VARCHAR2(200) CREATE OR REPLACE TRIGGER TBI$STATUS BEFORE INSERT ON WPH.STATUS FOR EACH ROW WHEN ( NEW.STATUS_ID IS NULL) DECLARE BEGIN SELECT STATUS_SEQ.NEXTVAL INTO :NEW.STATUS_ID FROM DUAL; END; CREATE OR REPLACE TRIGGER TBU$STATUS BEFORE UPDATE ON WPH.STATUS FOR EACH ROW BEGIN :new.geaendert_id := SYS_CONTEXT('VPD', 'USERID'); :new.geaendert_zst := sysdate; :new.geaendert_zaehler := :old.geaendert_zaehler + 1; end; Geschäftslogik in der Datenbank -- constructors, CONSTRUCTOR FUNCTION ROW_STATUS RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION ROW_STATUS(IN_STATUS_ID NUMBER) RETURN SELF AS RESULT -- member functions, MEMBER FUNCTION ROW_EXISTS(IN_STATUS_ID NUMBER) RETURN BOOLEAN, OVERRIDING MEMBER FUNCTION compare(in_type1 GLOBAL.TYPE_OBJECT,in_type2 GLOBAL.TYPE_OBJECT) RETURN INTEGER -- member procedures, MEMBER PROCEDURE ROW_INSERT, MEMBER PROCEDURE ROW_UPDATE, MEMBER PROCEDURE ROW_MERGE, MEMBER PROCEDURE ROW_SAVE, MEMBER PROCEDURE ROW_DELETE, MEMBER PROCEDURE ROW_SELECT(IN_STATUS_ID NUMBER), MEMBER PROCEDURE ROW_DEFAULT, MEMBER PROCEDURE ROW_LOCK, MEMBER PROCEDURE ROW_LOCK(IN_STATUS_ID NUMBER) ) NOT FINAL

6 RETURNING clause (INSERT und UPDATE) MEMBER PROCEDURE ROW_INSERT IS methodenname CONSTANT VARCHAR2(100) := 'WPH.ROW_STATUS.ROW_INSERT'; BEGIN IF SYS_CONTEXT('TRACE','TRACE_LEVEL') >= GLOBAL.PA_TRACE.TRACE_TRACE THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_TRACE, methodenname, 'Parameters: '); INSERT INTO WPH.STATUS ( STATUS_ID,KURZBEZEICHNUNG,BEZEICHNUNG ) VALUES ( SELF.STATUS_ID,SELF.KURZBEZEICHNUNG,SELF.BEZEICHNUNG ) RETURNING STATUS_ID,KURZBEZEICHNUNG,ERSTELLT_ZST,ERSTELLT_ID,GEAENDERT_ZST,GEAENDERT_ID,GEAENDERT_ZAEHLER,BEZEICHNUNG INTO SELF.STATUS_ID,SELF.KURZBEZEICHNUNG,SELF.ERSTELLT_ZST,SELF.ERSTELLT_ID,SELF.GEAENDERT_ZST,SELF.GEAENDERT_ID,SELF.GEAENDERT_ZAEHLER,SELF.BEZEICHNUNG ; EXCEPTION WHEN OTHERS THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_ERROR, methodenname, ' - Exception raised. ' SELF.TO_STRING() ', SQLcode=' to_char(sqlcode) ', ' SQLERRM); RAISE; END; Geschäftslogik in der Datenbank

7 SAVE und MERGE MEMBER PROCEDURE ROW_SAVE IS methodenname CONSTANT VARCHAR2(100) := 'WPH.ROW_STATUS.ROW_SAVE'; BEGIN IF SYS_CONTEXT('TRACE','TRACE_LEVEL') >= GLOBAL.PA_TRACE.TRACE_TRACE THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_TRACE, methodenname, 'Parameters: '); IF ROW_EXISTS(IN_STATUS_ID => SELF.STATUS_ID) THEN SELF.ROW_UPDATE; ELSE SELF.ROW_INSERT; EXCEPTION WHEN OTHERS THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_ERROR, methodenname, ' - Exception raised. ' SELF.TO_STRING() ', SQLcode=' to_char(sqlcode) ', ' SQLERRM); RAISE; END; MEMBER PROCEDURE ROW_MERGE IS methodenname CONSTANT VARCHAR2(100) := 'WPH.ROW_STATUS.ROW_MERGE'; BEGIN IF SYS_CONTEXT('TRACE','TRACE_LEVEL') >= GLOBAL.PA_TRACE.TRACE_TRACE THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_TRACE, methodenname, 'Parameters: '); MERGE INTO WPH.STATUS A USING ( SELECT SELF.STATUS_ID AS STATUS_ID,SELF.KURZBEZEICHNUNG AS KURZBEZEICHNUNG,SELF.BEZEICHNUNG AS BEZEICHNUNG FROM DUAL ) B ON (A.STATUS_ID = B.STATUS_ID) WHEN MATCHED THEN UPDATE SET KURZBEZEICHNUNG = B.KURZBEZEICHNUNG,BEZEICHNUNG = B.BEZEICHNUNG WHEN NOT MATCHED THEN INSERT ( STATUS_ID,KURZBEZEICHNUNG,BEZEICHNUNG ) VALUES ( B.STATUS_ID,B.KURZBEZEICHNUNG,B.BEZEICHNUNG ); EXCEPTION WHEN OTHERS THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_ERROR, methodenname, ' - Exception raised. ' SELF.TO_STRING() ', SQLcode=' to_char(sqlcode) ', ' SQLERRM); RAISE; END; Geschäftslogik in der Datenbank

8 Pessimistisches Locking - Default MEMBER PROCEDURE ROW_LOCK IS methodenname CONSTANT VARCHAR2(100) := 'WPH.ROW_STATUS.ROW_LOCK'; v_lock NUMBER; BEGIN IF SYS_CONTEXT('TRACE','TRACE_LEVEL') >= GLOBAL.PA_TRACE.TRACE_TRACE THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_TRACE, methodenname, 'Parameters: '); SELECT GEAENDERT_ZAEHLER INTO v_lock FROM WPH.STATUS WHERE STATUS_ID = SELF.STATUS_ID FOR UPDATE ; IF SELF.GEAENDERT_ZAEHLER <> v_lock THEN SELF.ROW_SELECT( IN_STATUS_ID => SELF.STATUS_ID); EXCEPTION WHEN OTHERS THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_ERROR, methodenname, ' - Exception raised. ' SELF.TO_STRING() ', SQLcode=' to_char(sqlcode) ', ' SQLERRM); RAISE; END; declare i ROW_STATUS; begin i := ROW_STATUS(IN_STATUS_ID => 200);... i.row_lock(); end; Geschäftslogik in der Datenbank

9 Pessimistisches Locking mit PK oder UK MEMBER PROCEDURE ROW_LOCK(IN_STATUS_ID NUMBER) IS methodenname CONSTANT VARCHAR2(300) := 'WPH.ROW_STATUS.ROW_LOCK(IN_STATUS_ID NUMBER)'; BEGIN IF SYS_CONTEXT('TRACE','TRACE_LEVEL') >= GLOBAL.PA_TRACE.TRACE_TRACE THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_TRACE, methodenname, 'Parameters: ' 'IN_STATUS_ID = ' IN_STATUS_ID ';' ); SELECT STATUS_ID,KURZBEZEICHNUNG,ERSTELLT_ZST,ERSTELLT_ID,GEAENDERT_ZST,GEAENDERT_ID,GEAENDERT_ZAEHLER,BEZEICHNUNG INTO SELF.STATUS_ID,SELF.KURZBEZEICHNUNG,SELF.ERSTELLT_ZST,SELF.ERSTELLT_ID,SELF.GEAENDERT_ZST,SELF.GEAENDERT_ID,SELF.GEAENDERT_ZAEHLER,SELF.BEZEICHNUNG FROM WPH.STATUS WHERE STATUS_ID = IN_STATUS_ID FOR UPDATE ; EXCEPTION WHEN OTHERS THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_ERROR, methodenname, ' - Exception raised. ' 'IN_STATUS_ID = ' IN_STATUS_ID ';' ', SQLcode=' to_char(sqlcode) ', ' SQLERRM); RAISE; END; declare i ROW_STATUS; begin i := ROW_STATUS(); i.row_lock(in_status_id => 200); end; Geschäftslogik in der Datenbank

10 Optimistisches Locking - UPDATE MEMBER PROCEDURE ROW_UPDATE IS methodenname CONSTANT VARCHAR2(100) := 'WPH.ROW_STATUS.ROW_UPDATE'; BEGIN IF SYS_CONTEXT('TRACE','TRACE_LEVEL') >= GLOBAL.PA_TRACE.TRACE_TRACE THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_TRACE, methodenname, 'Parameters: '); UPDATE WPH.STATUS SET KURZBEZEICHNUNG = SELF.KURZBEZEICHNUNG,BEZEICHNUNG = SELF.BEZEICHNUNG WHERE STATUS_ID = SELF.STATUS_ID AND GEAENDERT_ZAEHLER = SELF.GEAENDERT_ZAEHLER RETURNING STATUS_ID,KURZBEZEICHNUNG,ERSTELLT_ZST,ERSTELLT_ID,GEAENDERT_ZST,GEAENDERT_ID,GEAENDERT_ZAEHLER,BEZEICHNUNG INTO SELF.STATUS_ID,SELF.KURZBEZEICHNUNG,SELF.ERSTELLT_ZST,SELF.ERSTELLT_ID,SELF.GEAENDERT_ZST,SELF.GEAENDERT_ID,SELF.GEAENDERT_ZAEHLER,SELF.BEZEICHNUNG ; IF SQL%ROWCOUNT <> 1 THEN GLOBAL.RAISE(-20999); -- Der Datensatz hat sich zwischenzeitlich geändert EXCEPTION WHEN OTHERS THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_ERROR, methodenname, ' - Exception raised. ' SELF.TO_STRING() ', SQLcode=' to_char(sqlcode) ', ' SQLERRM); RAISE; END; Geschäftslogik in der Datenbank

11 Optimistisches Locking - DELETE MEMBER PROCEDURE ROW_DELETE IS methodenname CONSTANT VARCHAR2(100) := 'WPH.ROW_STATUS.ROW_DELELE'; BEGIN IF SYS_CONTEXT('TRACE','TRACE_LEVEL') >= GLOBAL.PA_TRACE.TRACE_TRACE THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_TRACE, methodenname, 'Parameters: '); DELETE FROM WPH.STATUS WHERE STATUS_ID = SELF.STATUS_ID AND GEAENDERT_ZAEHLER = SELF.GEAENDERT_ZAEHLER; IF SQL%ROWCOUNT <> 1 THEN GLOBAL.RAISE(-20999); -- Der Datensatz hat sich zwischenzeitlich geändert EXCEPTION WHEN OTHERS THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_ERROR, methodenname, ' - Exception raised. ' SELF.TO_STRING() ', SQLcode=' to_char(sqlcode) ', ' SQLERRM); RAISE; END; Geschäftslogik in der Datenbank

12 Variablen und OO-ROWTYPE declare s VARCHAR2(50); begin SELECT s.kurzbezeichnung INTO s FROM WPH.STATUS s WHERE s.status_id=200; end; declare s WPH.STATUS.KURZBEZEICHNUNG%TYPE; begin SELECT s.kurzbezeichnung INTO s FROM WPH.STATUS s WHERE s.status_id=200; end; declare s WPH.STATUS%ROWTYPE; begin SELECT * INTO s FROM WPH.STATUS s WHERE s.status_id=200; end; declare s WPH.ROW_STATUS; begin s := WPH.ROW_STATUS(IN_STATUS_ID => 200); end; Geschäftslogik in der Datenbank

13 Arbeiten mit OO-ROWTYPE declare i ROW_STATUS; begin i := ROW_STATUS(IN_STATUS_ID => 200); i.dbms_output; i.kurzbezeichnung := 'Eingestellt'; i.row_update; i.dbms_output; end; <ROW_STATUS> <OBJECT_TYPE_NAME>WPH.ROW_STATUS</OBJECT_TYPE_NAME> <STATUS_ID>200</STATUS_ID> <KURZBEZEICHNUNG>Einstellung</KURZBEZEICHNUNG> <ERSTELLT_ZST> </ERSTELLT_ZST> <ERSTELLT_ID>-2</ERSTELLT_ID> <GEAENDERT_ZST> </GEAENDERT_ZST> <GEAENDERT_ID>1469</GEAENDERT_ID> <GEAENDERT_ZAEHLER>2</GEAENDERT_ZAEHLER> <BEZEICHNUNG>ORDERAUSFUEHRUNG-STATUS</BEZEICHNUNG> </ROW_STATUS> <ROW_STATUS> <OBJECT_TYPE_NAME>WPH.ROW_STATUS</OBJECT_TYPE_NAME> <STATUS_ID>200</STATUS_ID> <KURZBEZEICHNUNG>Eingestellt</KURZBEZEICHNUNG> <ERSTELLT_ZST> </ERSTELLT_ZST> <ERSTELLT_ID>-2</ERSTELLT_ID> <GEAENDERT_ZST> </GEAENDERT_ZST> <GEAENDERT_ID>907</GEAENDERT_ID> <GEAENDERT_ZAEHLER>3</GEAENDERT_ZAEHLER> <BEZEICHNUNG>ORDERAUSFUEHRUNG-STATUS</BEZEICHNUNG> </ROW_STATUS> Geschäftslogik in der Datenbank

14 Gattungsstamm Input Daten G DE000AAR0082AAR "GD "GD100 01"GD100A 1"GD "GD161 DE"GD170 EO "GD171 EUR"GD172 EUR"GD190 PD"GD "GD196 1"GD198A SEC"GD198B 2000"GD198C 2003"GD198D ZZZZ"GD198E ZZZZ"GD198F E302"GD198G M401"GD "GD201 DE03472 "GD205B KA05"GD211 1"GD "GD213 25"GD214 22"GD215A J"GD217 AAC"GD218 J"GD218A J"GD218B J"GD218C J"GD "GD220A 004"GD220C 183"GD225 A"GD226 60"GD227 1"GD "GD230 MTH"GD234 1"GD "GD260 AAREAL BANK MTN.HPF.S.67 "GD270A Aareal Bank AG "GD270B MTN-HPF.S.67 v.2010(2013) "GD280A Serie 67 v (2013) "GD "GD290A "GD "GD312 6"GD321 10"GD "GD "GD388A "GD388PIDE "GD400 03"GD410 9"GD420 7"GD423 J"GD424 B"GD "GD440 2"GD455A "GD455E 1"GD473 ²NOM=1000,W=EUR; "GD481A 05"GD483 1"GD500 84"GD504A J"GD505B "GD505E 2"GD "GD545 1"GD545A 2"GD "GD571 J"GD572 J"GD "GD622 DE000AAR0082"GD622PWAAR008"GD630A "GD630B EUR"GD650A "GD "GD663A N"GD663D N"GD "GD670A EUR"GD670B %"GD672 1"GD685 DTFSFB"GD697 2B"GD776 3"GD801A "GD805 F"GD "GD811 1"GD812 16"GD812A 16"GD813 SEPT"GD813A SEPT"GD "GD815A "GD819 2"GD821B 09"GD822 01"GD841 2"GD861A "GD "GD "GD924 N"GD970G 01"GD986 ²deutsches Recht G DE000AAR0082AAR "GV992 ²0660/J/ / / / / / / / / / / / / ²0348/J/ / / / / / / / / / / / / ²2597/J/ / / / / / / / / / / / / G DE000AAR0082AAR "GV995 ²0660/ / / / / / / / / /J/ / / / ²0348/ / / / / / / / / / /J/ / / ²2597/ / / / / / / / / / /J/ / / E NO "ED001 2"ED002A 1"ED004A DD"ED023 1"ED024A "ED025A "ED G NO "GD "GD260 PETROLIA DRILLING NK 5"GD270A Petrolia Drilling ASA "GD270B Navne-Aksjer NK 5 "GD460A H NO "HD "HD U NO "UD001 1"UD002A 1"UD005 1"UD006 1"UD007 4"UD008A AZ"UD010A ST "UD010C "UD010D "UD011A ST "UD011C "UD011D "UD "UD021PINO "UD ²ca. "UD "UD078 20"UD "U D190 02"UD460A "UD460B Geschäftslogik in der Datenbank

15 Gattungsstamm Datenbank Model Geschäftslogik in der Datenbank

16 Schwergewichtiger TYPE CREATE OR REPLACE TYPE TYPE_GATTUNG AUTHID CURRENT_USER UNDER GLOBAL.TYPE_OBJECT ( -- Attributes id NUMBER(12), isin CHAR(12), wkn CHAR(6), sh NUMBER(2), geloescht DATE, name VARCHAR2(80), instrument VARCHAR2(80), fids WP.TABLE_WMFID, ertraege WP.TABLE_ERTRAG, kapitals WP.TABLE_KAPITAL, ohc WP.TABLE_GATTUNG_OHC, hauptversammlung WP.TABLE_HAUPTVERSAMMLUNG, bogenerneuerung WP.TABLE_BOGENERNEUERUNG, umtausch WP.TABLE_UMTAUSCH, verlosung WP.TABLE_VERLOSUNG, termin WP.TABLE_GATTUNG_TERMIN, opposition WP.TABLE_OPPOSITION, ifp WP.TABLE_WMFID, NWKN VARCHAR2(4000) -- Nationale WKN -- Methods, CONSTRUCTOR FUNCTION TYPE_GATTUNG RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_GATTUNG(in_id NUMBER) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_GATTUNG(IN_ID NUMBER, IN_DATUM DATE) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_GATTUNG(in_isin VARCHAR2, in_sh NUMBER DEFAULT 0) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_GATTUNG(in_wkn VARCHAR2, in_sh NUMBER DEFAULT 0) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_GATTUNG(in_wkn VARCHAR2, in_sh NUMBER, in_datum DATE) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_GATTUNG(in_isin VARCHAR2, in_wkn VARCHAR2, in_sh NUMBER DEFAULT 0, in_geloescht DATE DEFAULT NULL) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_GATTUNG(in_isin VARCHAR2, in_wkn VARCHAR2, in_instrument VARCHAR2) RETURN SELF AS RESULT, MEMBER PROCEDURE add_ertrag(in_ertrag WP.TYPE_ERTRAG), MEMBER PROCEDURE add_hauptversammlung(in_hauptversammlung WP.TYPE_HAUPTVERSAMMLUNG), MEMBER PROCEDURE add_bogenerneuerung(in_bogenerneuerung WP.TYPE_BOGENERNEUERUNG), MEMBER PROCEDURE add_kapital(in_kapital WP.TYPE_KAPITAL), MEMBER PROCEDURE add_umtausch(in_umtausch WP.TYPE_UMTAUSCH), MEMBER PROCEDURE add_verlosung(in_verlosung WP.TYPE_VERLOSUNG), MEMBER PROCEDURE add_ohc(in_ohc WP.TYPE_GATTUNG_OHC), MEMBER PROCEDURE add_termin(in_termin WP.TYPE_GATTUNG_TERMIN), MEMBER PROCEDURE add_opposition(in_opposition WP.TYPE_OPPOSITION), MEMBER PROCEDURE INIT_KAPITAL_DETAIL(SELF IN OUT TYPE_GATTUNG), MEMBER FUNCTION GET_KAPITAL_DETAIL(SELF IN OUT TYPE_GATTUNG) RETURN WP.TABLE_KAPITAL, MEMBER PROCEDURE INIT_FID_DETAIL(SELF IN OUT TYPE_GATTUNG), MEMBER FUNCTION GET_FID_DETAIL(SELF IN OUT TYPE_GATTUNG) RETURN WP.TABLE_WMFID, MEMBER PROCEDURE INIT_SCD_FIDS(IN_DATUM DATE DEFAULT NULL), MEMBER PROCEDURE INIT_OHC(IN_BOERSENPLATZ_ID VARCHAR2), ) NOT FINAL Geschäftslogik in der Datenbank

17 Schwergewichtiger TYPE (Fortsetzung) CREATE OR REPLACE TYPE TABLE_ERTRAG AS TABLE OF WP.TYPE_ERTRAG; CREATE OR REPLACE TYPE TYPE_ERTRAG UNDER WP.ROW_ERTRAG_BASE ( -- Attributes id NUMBER(12), fids WP.TABLE_WMFID -- Methods, CONSTRUCTOR FUNCTION TYPE_ERTRAG RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_ERTRAG(in_wmdaten WP.TYPE_WMDATEN) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_ERTRAG(OBJECT_TYPE_NAME VARCHAR2, ID NUMBER, BID_NR VARCHAR2, DATUM DATE, FIDS WP.TABLE_WMFID) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_ERTRAG(BID_NR VARCHAR2, DATUM DATE, FIDs WP.TABLE_WMFID) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_ERTRAG(in_BID_NR VARCHAR2, in_datum VARCHAR2, in_fids WP.TABLE_WMFID) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_ERTRAG(IN_ERTRAG_BASE_ID NUMBER, IN_DATUM DATE DEFAULT NULL) RETURN SELF AS RESULT, MEMBER PROCEDURE INIT_SCD_FIDS(IN_DATUM DATE DEFAULT NULL), OVERRIDING MEMBER FUNCTION compare(in_type1 GLOBAL.TYPE_OBJECT, in_type2 GLOBAL.TYPE_OBJECT) RETURN INTEGER, MEMBER PROCEDURE getdbid(in_gattung_id NUMBER), MEMBER PROCEDURE save(in_gattung_id NUMBER,IN_DATUM DATE DEFAULT SYSDATE), MEMBER FUNCTION TO_VF1 RETURN GLOBAL.TABLE_VARCHAR2 ) NOT FINAL CREATE OR REPLACE TYPE ROW_ERTRAG_BASE UNDER GLOBAL.TYPE_OBJECT (-- attributes ERTRAG_BASE_ID NUMBER(12), GATTUNG_BASE_ID NUMBER(12), BID_NR VARCHAR2(5), DATUM DATE, ERSTELLT_ZST DATE, GEAENDERT_ZST DATE, ERSTELLT_ID NUMBER(12), GEAENDERT_ID NUMBER(12), ERSTELLT_IP VARCHAR2(30), GEAENDERT_IP VARCHAR2(30), GEAENDERT_ZAEHLER NUMBER(10) -- define constructors, CONSTRUCTOR FUNCTION ROW_ERTRAG_BASE RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION ROW_ERTRAG_BASE(ERTRAG_BASE_ID NUMBER, GATTUNG_BASE_ID NUMBER, BID_NR, ) NOT FINAL Geschäftslogik in der Datenbank

18 Schwergewichtiger TYPE & Load Balancing MEMBER PROCEDURE INIT_KAPITAL_DETAIL(SELF IN OUT TYPE_GATTUNG) IS methodenname CONSTANT VARCHAR2(300) := 'WP.' $$PLSQL_UNIT '.INIT_KAPITAL_DETAIL'; FUNCTION parm RETURN VARCHAR2 IS BEGIN RETURN substr( 'Parameter: ' CHR(10) 'SELF:' SELF.TO_STRING(),1,32760); END; BEGIN IF SYS_CONTEXT('TRACE','TRACE_LEVEL') >= GLOBAL.PA_TRACE.TRACE_TRACE THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_TRACE, methodenname, parm()); SELF.kapitals := WP.TABLE_KAPITAL(); FOR rec IN (SELECT d.kapital_base_id FROM WP.Kapital_Base d WHERE d.gattung_base_id = SELF.id ORDER BY datum ) LOOP SELF.kapitals.EXTEND; SELF.kapitals(SELF.kapitals.LAST) := WP.TYPE_KAPITAL(in_kapital_base_id => rec.kapital_base_id); END LOOP; EXCEPTION WHEN OTHERS THEN GLOBAL.pa_trace.TRACE( GLOBAL.pa_trace.TRACE_ERROR, methodenname, parm() CHR(10) ', SQLcode=' to_char(sqlcode) ', ' SQLERRM); RAISE; END; MEMBER FUNCTION GET_KAPITAL_DETAIL(SELF IN OUT TYPE_GATTUNG) RETURN WP.TABLE_KAPITAL IS methodenname CONSTANT VARCHAR2(300) := 'WP.' $$PLSQL_UNIT '.GET_KAPITAL_DETAIL'; FUNCTION parm RETURN VARCHAR2 IS BEGIN RETURN substr('parameter: ' CHR(10) 'SELF:' SELF.TO_STRING(),1,32760); END; BEGIN IF SYS_CONTEXT('TRACE','TRACE_LEVEL') >= GLOBAL.PA_TRACE.TRACE_TRACE THEN GLOBAL.PA_TRACE.TRACE( GLOBAL.PA_TRACE.TRACE_TRACE, methodenname, parm()); IF SELF.kapitals IS NULL THEN SELF.INIT_KAPITAL_DETAIL(); RETURN SELF.kapitals; EXCEPTION WHEN OTHERS THEN GLOBAL.pa_trace.TRACE( GLOBAL.pa_trace.TRACE_ERROR, methodenname, parm() CHR(10) ', SQLcode=' to_char(sqlcode) ', ' SQLERRM); RAISE; END; Geschäftslogik in der Datenbank

19 Fliegengewichtiger COMP CREATE OR REPLACE TYPE COMP_GATTUNG UNDER GLOBAL.TYPE_OBJECT ( -- Attributes GATTUNG_BASE_ID NUMBER, WKN CHAR(6), ISIN CHAR(12), SH NUMBER(2), NAME VARCHAR2(80), INSTRUMENT VARCHAR2(80), GELOESCHT DATE -- Methods, CONSTRUCTOR FUNCTION COMP_GATTUNG RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION COMP_GATTUNG(IN_GATTUNG_BASE_ID NUMBER) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION COMP_GATTUNG(IN_ISIN VARCHAR2, IN_SH NUMBER DEFAULT 0) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION COMP_GATTUNG(IN_WKN VARCHAR2, IN_SH NUMBER DEFAULT 0) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION COMP_GATTUNG(IN_ISIN VARCHAR2, IN_WKN VARCHAR2, IN_SH NUMBER) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION COMP_GATTUNG(IN_SECURITY_ID VARCHAR2, IN_ID_SOURCE VARCHAR2) RETURN SELF AS RESULT, MEMBER FUNCTION GET_ABRECHNUNGS_WAEHRUNG_ISO(IN_BOERSENPLATZ_ID VARCHAR2) RETURN VARCHAR2, MEMBER FUNCTION GET_ABRECHNUNGS_WAEHRUNG_ID(IN_BOERSENPLATZ_ID VARCHAR2) RETURN NUMBER, MEMBER FUNCTION GET_ABRECHNUNGS_WAEHRUNG_ISO RETURN VARCHAR2, MEMBER FUNCTION GET_HANDELS_WAEHRUNG_ISO(IN_BOERSENPLATZ_ID VARCHAR2) RETURN VARCHAR2, MEMBER FUNCTION GET_HANDELS_WAEHRUNGEN_ISO(IN_BOERSENPLATZ_ID VARCHAR2) RETURN BBS.TAB_ROW_WAEHRUNG, MEMBER FUNCTION GET_RIC RETURN VARCHAR2, MEMBER FUNCTION GET_RIC(IN_BOERSENPLATZ_ID VARCHAR2) RETURN VARCHAR2, MEMBER FUNCTION GET_SEDOL RETURN VARCHAR2, MEMBER FUNCTION GET_CUSIP RETURN VARCHAR2, MEMBER FUNCTION GET_EMITTENT_NR RETURN VARCHAR2, MEMBER FUNCTION GET_HEIMATLAND_ISO RETURN VARCHAR2, MEMBER FUNCTION GET_HEIMATBOERSE_ID RETURN VARCHAR2, MEMBER FUNCTION GET_LETZTER_HANDELSTAG(IN_BOERSENPLATZ_ID VARCHAR2) RETURN DATE, MEMBER FUNCTION IS_MIFID_RELEVANT RETURN BOOLEAN, MEMBER FUNCTION IS_DAX RETURN BOOLEAN, MEMBER FUNCTION IS_MDAX RETURN BOOLEAN, MEMBER FUNCTION IS_SDAX RETURN BOOLEAN, MEMBER FUNCTION IS_TECDAX RETURN BOOLEAN, MEMBER FUNCTION IS_STOXX RETURN BOOLEAN, MEMBER FUNCTION IS_HANDELBAR(IN_LAND_ISO VARCHAR2) RETURN BOOLEAN, MEMBER FUNCTION IS_HANDELBAR(IN_BOERSENPLATZ_ID VARCHAR2) RETURN BOOLEAN, MEMBER FUNCTION IS_HANDELBAR_FH(IN_BOERSENPLATZ_ID VARCHAR2) RETURN BOOLEAN, MEMBER FUNCTION IS_INVESTRO RETURN BOOLEAN, MEMBER FUNCTION IS_ZERTIFIKAT RETURN BOOLEAN, MEMBER FUNCTION IS_WARRANT RETURN BOOLEAN, MEMBER FUNCTION IS_FOND RETURN BOOLEAN, MEMBER FUNCTION IS_BEGO_FOND RETURN BOOLEAN, MEMBER FUNCTION IS_EHF RETURN BOOLEAN, MEMBER FUNCTION IS_DEF RETURN BOOLEAN, ) NOT FINAL Geschäftslogik in der Datenbank

20 Schwergewichtiger TYPE CREATE OR REPLACE TYPE TYPE_KUNDE UNDER BBS.ROW_KUNDE ( -- attributes DEPOT BBS.TABLE_DEPOT, KONTEN BBS.TABLE_KONTO, KONTEN_BBS BBS.TABLE_KONTO_BBS, land nationalitaet rechtsform branche betreuer1 betreuer2 betreuer3 betreuer4 stammkreis VARCHAR2(35), VARCHAR2(35), VARCHAR2(105), VARCHAR2(105), VARCHAR2(35), VARCHAR2(35), VARCHAR2(35), VARCHAR2(35), VARCHAR2(35) -- define constructors, CONSTRUCTOR FUNCTION TYPE_KUNDE RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_KUNDE(IN_STAMMNR VARCHAR2) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_KUNDE(IN_UNTERDEPOTID NUMBER) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_KUNDE(IN_KUNDENID NUMBER, IN_KONTOID NUMBER) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION TYPE_KUNDE(IN_DEPOTNUMMER CHAR, IN_REFERENZNUMMER NUMBER) RETURN SELF AS RESULT static functions instead of constructors -- duplicate signature problem in Java, STATIC FUNCTION CONSTRUCTOR_TYPE_KUNDE(IN_KUNDENID NUMBER) RETURN BBS.TYPE_KUNDE, STATIC FUNCTION CONSTRUCTOR_KONTONUMMER(IN_KONTONUMMER VARCHAR2) RETURN BBS.TYPE_KUNDE, STATIC FUNCTION CONSTRUCTOR_KONTO_BBS_ID(IN_KONTO_BBS_ID NUMBER) RETURN BBS.TYPE_KUNDE -- define member functions, MEMBER PROCEDURE ROW_SELECT(IN_STAMMNR VARCHAR2), MEMBER PROCEDURE ROW_SELECT(IN_KUNDENID NUMBER, IN_VERSION NUMBER), MEMBER PROCEDURE init_text_fields, MEMBER PROCEDURE INIT_DEPOT(SELF IN OUT TYPE_KUNDE, IN_REFERENZNUMMER NUMBER DEFAULT NULL), MEMBER PROCEDURE INIT_DEPOT(SELF IN OUT TYPE_KUNDE, IN_DISPLAY_ID NUMBER, IN_REFERENZNUMMER NUMBER DEFAULT NULL), MEMBER PROCEDURE INIT_KONTEN(SELF IN OUT TYPE_KUNDE), ) NOT FINAL Geschäftslogik in der Datenbank

21 Fliegengewichtiger COMP CREATE OR REPLACE TYPE COMP_KUNDE UNDER GLOBAL.TYPE_OBJECT ( -- Attributes KUNDE_ID NUMBER(12), STAMMNUMMER CHAR(10), INHABER VARCHAR2(35), SPRACHE_ID NUMBER(12) -- Methods, CONSTRUCTOR FUNCTION COMP_KUNDE RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION COMP_KUNDE(in_kunde_id NUMBER) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION COMP_KUNDE(in_stammnummer CHAR) RETURN SELF AS RESULT, CONSTRUCTOR FUNCTION COMP_KUNDE(in_unterdepot_id NUMBER) RETURN SELF AS RESULT ) NOT FINAL Geschäftslogik in der Datenbank

22 Mischung OO-Type und relationale FK ID Analogon zur DEREF in ODBMS kann man mit dem FK eines Type den anderen Type instanzieren declare b wph.row_boerse; h wph.row_handelssystem; begin b := wph.row_boerse('194'); h := wph.row_handelssystem(b.handelssystem_id); end; Geschäftslogik in der Datenbank

23 Wie programmieren wir in PL/SQL -- Allocation ermitteln FOR rec_alloc IN (SELECT g.column_value AS xml FROM TABLE (XMLSEQUENCE(rec_order.XML.EXTRACT('Order/Allocations/Allocation'))) g) LOOP -- Neue Allocation anlegen t_allocation := NEW WPH.TYPE_ALLOCATION ( IN_KUNDE_ID => t_ob.kunde_id, IN_ANNAHMEART_ID => t_ob.annahmeart_id, IN_ALLOC_IDENT => t_ob.order_nr_extern,...); -- Order hinzufuegen t_allocation.add_order(in_order_buch_id => t_ob.order_buch_id); -- Client Account ermitteln v_client_account := GLOBAL.PA_XML.EXTRACT_STRING(rec_alloc.XML, 'Allocation/ClientAccount'); -- Stueckzahl ermitteln v_stueckzahl := GLOBAL.PA_XML.EXTRACT_NUMBER(rec_alloc.XML, 'Allocation/Stueckzahl'); IF v_stueckzahl IS NOT NULL THEN -- Allocation hinzufuegen t_allocation.add_allocation(in_client_account => v_client_account, IN_STUECKZAHL => GLOBAL.PA_XML.EXTRACT_NUMBER(rec_alloc.XML, 'Allocation/Stueckzahl'), IN_KURS => NULL); ELSE -- Prozentsatz ermitteln v_prozentsatz := GLOBAL.PA_XML.EXTRACT_NUMBER(rec_alloc.XML, 'Allocation/Prozentsatz'); -- Allocation hinzufuegen t_allocation.add_allocation(in_client_account => v_client_account, IN_PROZENTSATZ => v_prozentsatz); END LOOP; -- Allocation einstellen t_allocation.einstellen(); Geschäftslogik in der Datenbank

24 Wie programmieren wir in PL/SQL -- zentrale Schnittstelle zum Steuermodul PROCEDURE STEUER_BERECHNUNG(...) IS t_steuer BBS.TYPE_STEUER; BEGIN -- geschäftsbedingt Instanzierung IF...GESCHAEFTSART = 'KKZ' THEN t_steuer := NEW BBS.TYPE_STEUER_KKZ(...) ELSIF...GESCHAEFTSART = 'WPK' THEN t_steuer := NEW BBS.TYPE_STEUER_WPK(...) ELSIF <weitere Geschäftsbereiche> THEN t_steuer := NEW BBS.TYPE_STEUER_XXX(...) -- Aufruf der Steuerverrechnung t_steuer.berechne_steuern; END; Geschäftslogik in der Datenbank

25 Unsere Leitsätze Man sollte alles so einfach wie möglich machen, aber nicht einfacher Albert Einstein "Der einfache und klare Zweck sowie Prinzipien bedingen komplexes und intelligentes Verhalten". "Komplexe Regeln und Vorschriften bedingen einfaches und dummes Verhalten". Dee Hock, Designer VISA-Systems Ein System erreicht Perfektion nicht, wenn nichts weiter hinzugefügt werden kann, sondern wenn nichts weiter entfernt werden kann.??? Geschäftslogik in der Datenbank

26 Q&A Vielen Dank! Geschäftslogik in der Datenbank

Objektorientierte PL/SQL-Programmierung für RDBMS

Objektorientierte PL/SQL-Programmierung für RDBMS Willkommen Objektorientierte PL/SQL-Programmierung für RDBMS Andriy Terletskyy Berenberg Bank Neuer Jungfernstieg 20 20354 Hamburg Berenberg stellt sich vor MDV/EDV- Erfahrung Zeitraum Hardware Datenbank

Mehr

Objektorientierte PL/SQL- Programmierung

Objektorientierte PL/SQL- Programmierung Objektorientierte PL/SQL- Programmierung Autoren: Andriy Terletskyy und Michael Meyer DOAGNews Q3_2004 Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die der Übersetzung,

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

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

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

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

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

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

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

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

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

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

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

Objektorientierung unter Oracle richtet sich einerseits nach objekt-orientierten Programmiersprachen wie Java,

Objektorientierung unter Oracle richtet sich einerseits nach objekt-orientierten Programmiersprachen wie Java, Tipps & Tricks: Objektorientierung Bereich: PLSQL Erstellung: 032001 HA Versionsinfo: 9.2, 10.2, 11.1 Letzte Überarbeitung: 062009 HA Objektorientierung unter Oracle Objektorientierung unter Oracle richtet

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

Objekt-relationales Datenbanksystem Oracle

Objekt-relationales Datenbanksystem Oracle Objekt-relationales Datenbanksystem Oracle 1 Benutzerdefinierte Datentypen 1.1 Unvollständige Typen create-incomplete-type OR 1.2 Kollektionstypen REPLACE TYPE type-name create-varray-type OR TYPE type-name

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

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

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

Grundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB

Grundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB Grundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB Jörg Liedtke, Oracle Consulting Vortrag zum Praxis-Seminar B bei der KIS-Fachtagung 2007, Ludwigshafen Agenda

Mehr

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel ORM & OLAP Object-oriented Enterprise Application Programming Model for In-Memory Databases Sebastian Oergel Probleme 2 Datenbanken sind elementar für Business-Anwendungen Gängiges Datenbankparadigma:

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Strukturierte Objekttypen

Strukturierte Objekttypen Strukturierte Objekttypen Der Typ t approxmatch row des letzten Beispiels ist ein sogenannter Objekttyp. Definition: Ein Objekttyp ist ein Datentyp, bei dem (u.u. verschiedene) bekannte Datentypen zu einem

Mehr

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004) Nachtrag: Farben Farbblindheit (Light und Bartlein 2004) 1 Vorgeschlagene Farbskalen (Light and Bartlein 2004) Farbkodierung metrisch skalierter Daten Unterscheide: 1. Sequential Data (ohne Betonung der

Mehr

Aufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators

Aufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators Aufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators München, 21. Nowember 2007 Nicola Marangoni & Jörg Westermayer Nicola.Marangoni@SHS-VIVEON.com Joerg.Westermayer@SHS-VIVEON.com

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

Ü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

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

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

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Aufgabe 1: Projektion Datenbanksysteme I π A1,...,A n (π B1,...,B

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

Datenmanagement in Android-Apps. 16. Mai 2013

Datenmanagement in Android-Apps. 16. Mai 2013 Datenmanagement in Android-Apps 16. Mai 2013 Überblick Strukturierung von datenorientierten Android-Apps Schichtenarchitektur Möglichkeiten der Datenhaltung: in Dateien, die auf der SDCard liegen in einer

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

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

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

Housekeeping -2

Housekeeping -2 Housekeeping -1 Housekeeping -2 Housekeeping -3 Housekeeping -4 Housekeeping -5 Housekeeping -6 Stichwörter: Aufräumen im Dateisystem Housekeeping -7 Stichwörter: Aufräumen im Dateisystem Housekeeping

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

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

Referentielle Integrität

Referentielle Integrität Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung statische Integritätsbedingungen Bedingungen an den Zustand der Datenbasis dynamische

Mehr

Objektrelationale Datenbanken

Objektrelationale Datenbanken Vorlesung Datenbanksysteme vom 26.11.2008 Objektrelationale Datenbanken Konzepte objektrelationaler DBs SQL:1999 OO vs. OR Konzepte objektrelationaler Datenbanken Große Objekte (LOBs: Large Objects) Mengenwertige

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

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Housekeeping -2

Housekeeping -2 Housekeeping -1 Housekeeping -2 Housekeeping -3 Housekeeping -4 Housekeeping -5 Housekeeping -6 Weitere Ordner unter $ORA_CRS_HOME/log/crs: log : Verzeichnis für CRS Resourcen die dazukommen, neu gestartet

Mehr

PostgreSQL unter Debian Linux

PostgreSQL unter Debian Linux Einführung für PostgreSQL 7.4 unter Debian Linux (Stand 30.04.2008) von Moczon T. und Schönfeld A. Inhalt 1. Installation... 2 2. Anmelden als Benutzer postgres... 2 2.1 Anlegen eines neuen Benutzers...

Mehr

Praktische SQL-Befehle 2

Praktische SQL-Befehle 2 Praktische SQL-Befehle 2 Datenbanksysteme I WiSe 2018/2019 Todor Ivanov DB1 WS2018 1 Praktische SQL-Befehle Functions Views Triggers Voraussetzung: Laptop + MySQL/ MariaDB + Workbench! DB1 WS2018 2 Airport

Mehr

Oracle und LDAP. Zugriff auf LDAP-Daten aus einer Oracle-DB. Martin Busik busik@wlp-systems.de

Oracle und LDAP. Zugriff auf LDAP-Daten aus einer Oracle-DB. Martin Busik busik@wlp-systems.de Oracle und LDAP Zugriff auf LDAP-Daten aus einer Oracle-DB Martin Busik busik@wlp-systems.de Lightweight Directory LDAP Access Protocol LDAP dc=de dc=wlp Systems dc=drucker cn=lj4100d cn=canon photo ou=mitarbeiter

Mehr

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS 2015. XMLType. Christian Senger/Andreas Schmidt XMLType 1/32

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS 2015. XMLType. Christian Senger/Andreas Schmidt XMLType 1/32 XMLType Christian Senger/Andreas Schmidt XMLType 1/32 XMLType von Oracle vordefinierter Typ zur Speicherung von nativen XML-Dokumenten unterstützt verschiedene Speichermodelle für XML structured storage

Mehr

Objektrelationale, erweiterbare Datenbanken WS 04/05

Objektrelationale, erweiterbare Datenbanken WS 04/05 Eidgenössische Technische Hochschule Zürich Swiss Federal Institute of Technology Zurich Institut für Informationssysteme Dr.C.Türker Objektrelationale, erweiterbare Datenbanken WS 0405 Übung 8 Aufgabe

Mehr

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2 5 Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn 7 7. Datenbank-Zugriff Zum Beispiel aus PHP-Skripten: Client 7-2 Struktur einer Datenbank 7-3 Erzeugen von Datenbanken

Mehr

Extracting Business Rules from PL/SQL-Code

Extracting Business Rules from PL/SQL-Code Extracting Business Rules from PL/SQL-Code Version 7, 13.07.03 Michael Rabben Knowledge Engineer Semantec GmbH, Germany Why? Where are the business rules? Business Rules are already hidden as logic in

Mehr

PostgreSQL in großen Installationen

PostgreSQL in großen Installationen PostgreSQL in großen Installationen Cybertec Schönig & Schönig GmbH Hans-Jürgen Schönig Wieso PostgreSQL? - Die fortschrittlichste Open Source Database - Lizenzpolitik: wirkliche Freiheit - Stabilität,

Mehr

IV. Datenbankmanagement

IV. Datenbankmanagement Wirtschaftsinformatik 2 (PWIN) IV. Datenbankmanagement Kapitel 2: Datenmanipulationssprache SQL Wirtschaftsinformatik 2 (PWIN) SS 2009, Professur für Mobile Business & Multilateral Security 1 Agenda 1.

Mehr

Datenintegrität. Bisherige Integritätsbedingungen

Datenintegrität. Bisherige Integritätsbedingungen Datenintegrität Integitätsbedingungen chlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung statische Bedingungen an den Zustand der Datenbasis dynamische Bedingungen an Zustandsübergänge

Mehr

desk.modul : WaWi- Export

desk.modul : WaWi- Export desk.modul : WaWi- Export Die Schnittstelle besteht aus einem Programm, welches die Daten aus der OfficeLine ausliest und in eine XML-Datei exportiert. Die Schnittstelle ist als ein eigenständiges Programm

Mehr

Logging und Debugging. Gerd Volberg OPITZ CONSULTING Deutschland GmbH

Logging und Debugging. Gerd Volberg OPITZ CONSULTING Deutschland GmbH Logging und Debugging Gerd Volberg OPITZ CONSULTING Deutschland GmbH Bochum, 20. Februar 2014 OPITZ CONSULTING GmbH Seite 1 Agenda 1. Logging Datenmodell Tabellen Views 2. Debugging Debug-Package Funktionen

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

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Datenintegrität Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Formulierung von Integritätsbedingungen ist die wichtigste Aufgabe des DB-Administrators!

Mehr

Beispiel 1: Filmdatenbank

Beispiel 1: Filmdatenbank Beispiel 1: Filmdatenbank Die Filmdatenbank hat drei Tabellen (ACTOR, MOVIE, PLAYED) Aufgabe 1: Erstelle mit Hilfe der SQL-DDL die drei Tabellen und die Datenbank (MOVIEDB) ACTOR (ActorID, Name, Birthday,

Mehr

Roland Tilgner. Solution Architects & Team Coaching DEVELOPMENT. ORACLE TEXT AUS PL/SQL-SICHT Features und Möglichkeiten

Roland Tilgner. Solution Architects & Team Coaching DEVELOPMENT. ORACLE TEXT AUS PL/SQL-SICHT Features und Möglichkeiten Roland Tilgner Solution Architects & Team Coaching DEVELOPMENT ORACLE TEXT AUS PL/SQL-SICHT Features und Möglichkeiten ZURPERSON Roland Tilgner ZURFIRMA Roland Tilgner Solution Architects & Team Coaching

Mehr

SQL und MySQL. Kristian Köhntopp

SQL und MySQL. Kristian Köhntopp SQL und MySQL Kristian Köhntopp Wieso SQL? Datenbanken seit den frühen 1950er Jahren: Hierarchische Datenbanken Netzwerkdatenbanken Relationale Datenbanken = SQL Relational? 10 9 8 7 6 f(y) := y = x r(y)

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

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL. Datenintegrität Arten von Integritätsbedingungen Statische Integritätsbedingungen Referentielle Integrität Integritätsbedingungen in SQL Trigger 1 Datenintegrität Einschränkung der möglichen Datenbankzustände

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

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Datenintegrität Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Formulierung von Integritätsbedingungen ist die wichtigste Aufgabe des DB-Administrators!

Mehr

Geschäftslogik in der Datenbank

Geschäftslogik in der Datenbank Geschäftslogik in der Datenbank Umstellung eines Kernbanksystems Michael Meyer Lead Database Architect November 2010 DOAG-Konferenz 2010, Nürnberg Geschäftslogik in der Datenbank Umstellung eines Kernbanksystems

Mehr

Entwicklung einer Informix- Administrationsdatenbank mit ERwin

Entwicklung einer Informix- Administrationsdatenbank mit ERwin Entwicklung einer Informix- Administrationsdatenbank mit ERwin Ausgangslage Ein oder mehrere Informix-Datenbankserver Mehrere Datenbanken Sehr viele Tabellen 21.10.1997 2 Problemstellung Fehlerprävention

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

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

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

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

UDAG's. UDAG s. benutzerdefinierte Aggregatfunktionen. Implementierung, Anwendung, Tipps & Tricks. Dr. Kurt Franke debitel AG

UDAG's. UDAG s. benutzerdefinierte Aggregatfunktionen. Implementierung, Anwendung, Tipps & Tricks. Dr. Kurt Franke debitel AG UDAG's benutzerdefinierte Aggregatfunktionen Implementierung, Anwendung, Tipps & Tricks Dr. Kurt Franke debitel AG Begriffsdefinition Implementierungsmöglichkeiten Implementierungsmechanismus Komplett-Implementierungsmethode

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL.

Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL. 2 Grundlagen von PL/SQL Grundelemente von PL/SQL. 2.1 Übersicht Themen des Kapitels Grundlagen von PL/SQL Themen des Kapitels PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren Im Kapitel Grundlagen

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

<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

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

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

Referentielle Integrität

Referentielle Integrität Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung statische Integritätsbedingungen Bedingungen an den Zustand der Datenbasis dynamische

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

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

Ü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

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

DOAG 2016 Oracle APEX Security

DOAG 2016 Oracle APEX Security Für die Restricted Einstellung sind nur folgende Items vorgesehen: Display as Text (escape special characters, does not save state) Display as Text (does not save state) Display as Text (based on LOV,

Mehr

Labor 3 - Datenbank mit MySQL

Labor 3 - Datenbank mit MySQL Labor 3 - Datenbank mit MySQL Hinweis: Dieses Labor entstand z.t. aus Scripten von Prof. Dr. U. Bannier. 1. Starten des MySQL-Systems MySQL ist ein unter www.mysql.com kostenlos erhältliches Datenbankmanagementsystem.

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

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL Relationales Modell: SQLDDL SQL als Definitionssprache SQLDDL umfaßt alle Klauseln von SQL, die mit Definition von Typen Wertebereichen Relationenschemata Integritätsbedingungen zu tun haben Externe Ebene

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

Objektbasierte Entwicklung

Objektbasierte Entwicklung Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit

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

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Terminierungs-Analyse von SQL-Triggern. Sommersemester 05 T. Jahn Seminar Intelligente Datenbanken SQL-Trigger: Terminierungs-Analyse 1

Terminierungs-Analyse von SQL-Triggern. Sommersemester 05 T. Jahn Seminar Intelligente Datenbanken SQL-Trigger: Terminierungs-Analyse 1 Terminierungs- von SQL-Triggern T. Jahn Seminar Intelligente Datenbanken SQL-Trigger: Terminierungs- 1 Terminierungs- von SQL-Triggern Seminar Intelligente Datenbanken Prof. Dr. R. Manthey Andreas Behrend

Mehr

Dynamische Generierung von XML

Dynamische Generierung von XML Kunde: DOAGNews Ort, Datum: Artikel im Heft Q3 / 2005 Thema / Themen: Projekt: Autor: Artikel von merlin.zwo Dynamische Generierung von XML In Hakon Lugert Oracle & Technologien Systementwicklung Individuelle

Mehr

Oracle 10g Einführung

Oracle 10g Einführung Kurs Oracle 10g Einführung Teil 5 Einführung Timo Meyer Administration von Oracle-Datenbanken Timo Meyer Sommersemester 2006 Seite 1 von 16 Seite 1 von 16 Agenda 1 Tabellen und Views erstellen 2 Indizes

Mehr

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1 Fachhochschule Kaiserslautern Fachbereiche Elektrotechnik/Informationstechnik und Maschinenbau Labor Datenbanken Versuch 1 : Die Grundlagen von MySQL ------------------------------------------------------------------------------------------------------------

Mehr

Fortgeschrittene SQL-Techniken für APEX-Formulare und Reports

Fortgeschrittene SQL-Techniken für APEX-Formulare und Reports Fortgeschrittene SQL-Techniken für APEX-Formulare und Reports Andreas Wismann WHEN OTHERS Beratung Projektmanagement Coaching rund um Oracle Application Express rund um Application Express Beratung Projektmanagement

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