- Gebundenes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Mit PL/SQL, der prozeduralen Erweiterung von SQL, verfügen Sie über eine faszinierende Technologie, um Oracles Datenbank mächtige Funktionen abzugewinnen. Egal, ob Sie bereits mit Datenbanken zu tun haben und jetzt die Fähigkeiten mit PL/SQL erweitern möchten, sich als Administrator beispielsweise in die Programmierung von Triggern einarbeiten wollen oder als Anwendungsentwickler einen näheren Blick auf Datenbankinterna werfen müssen: In diesem umfassenden Handbuch finden Sie alles, was Sie benötigen, um mit PL/SQL den maximalen Nutzen für Ihren Anwendungsfall zu finden. Dafür sorgen die…mehr
Andere Kunden interessierten sich auch für
- Jörg StaudemeyerR - kurz & gut14,90 €
- Data Science59,90 €
- Uli SchellMaschinelles Lernen mit R39,99 €
- Christine RuppUML 2 glasklar34,90 €
- Sandro ScheidData Science29,99 €
- Natural Computing in Computational Finance112,99 €
- Mathias TrabsStatistik und maschinelles Lernen37,99 €
-
-
-
-
-
-
-
Mit PL/SQL, der prozeduralen Erweiterung von SQL, verfügen Sie über eine faszinierende Technologie, um Oracles Datenbank mächtige Funktionen abzugewinnen. Egal, ob Sie bereits mit Datenbanken zu tun haben und jetzt die Fähigkeiten mit PL/SQL erweitern möchten, sich als Administrator beispielsweise in die Programmierung von Triggern einarbeiten wollen oder als Anwendungsentwickler einen näheren Blick auf Datenbankinterna werfen müssen: In diesem umfassenden Handbuch finden Sie alles, was Sie benötigen, um mit PL/SQL den maximalen Nutzen für Ihren Anwendungsfall zu finden. Dafür sorgen die gründliche Einführung in Aufbau und Syntax von PL/SQL, hilfreiche Anregungen zum Einsatz und der Verbesserung Ihres Codes sowie ausführliche Workshops mit Praxisbezug. Im Vordergrund des Buchs stehen die Strategien, die Sie benötigen, um performante, sichere und skalierbare Applikationen zu entwickeln. Neben der umfassenden Einführung in PL/SQL geht es daher um Fragen wie beispielsweise: Auf welche Weise können Sie große Datenmengen effizient verarbeiten? Welche Vor- und Nachteile haben Datenbanktrigger, wann sind sie richtig, wann nicht? Wann sollten Sie PL/SQL einsetzen, wann SQL? Wie schützen Sie die Datenbank vor unberechtigtem Zugriff? Die Kombination von strategischer Denkweise zur Datenbankprogrammierung und Workshops sowie Codebeispielen hilft Ihnen bei der korrekten und hochwertigen Datenbankprogrammierung. Aktuell zu Oracle 12c.
Aus dem Inhalt:
Für Programmierer und AdministratorenGrundlagen von Oracle-DatenbankenWerkzeuge und RessourcenDatensicherheit, Konsistenz, TransaktionenErweiterung von DatenbankfunktionalitätenSyntax von PL/SQL, Datentypen, Kontrollstrukturen,dynamisches SQLTrigger, Verarbeitung von Dateien,FehlerbehebungPluggable DatabasesDebugging, Monitoring und PerformanztuningPL/ScopeWorkshops aus der Praxisu. v. m.
Aus dem Inhalt:
Für Programmierer und AdministratorenGrundlagen von Oracle-DatenbankenWerkzeuge und RessourcenDatensicherheit, Konsistenz, TransaktionenErweiterung von DatenbankfunktionalitätenSyntax von PL/SQL, Datentypen, Kontrollstrukturen,dynamisches SQLTrigger, Verarbeitung von Dateien,FehlerbehebungPluggable DatabasesDebugging, Monitoring und PerformanztuningPL/ScopeWorkshops aus der Praxisu. v. m.
Produktdetails
- Produktdetails
- Rheinwerk Computing
- Verlag: Rheinwerk Verlag
- Artikelnr. des Verlages: 459/06073
- 3., aktualis. u. erw. Aufl.
- Seitenzahl: 1060
- Erscheinungstermin: 27. November 2017
- Deutsch
- Abmessung: 244mm x 176mm x 62mm
- Gewicht: 2113g
- ISBN-13: 9783836260732
- ISBN-10: 3836260735
- Artikelnr.: 48984829
- Herstellerkennzeichnung Die Herstellerinformationen sind derzeit nicht verfügbar.
- Rheinwerk Computing
- Verlag: Rheinwerk Verlag
- Artikelnr. des Verlages: 459/06073
- 3., aktualis. u. erw. Aufl.
- Seitenzahl: 1060
- Erscheinungstermin: 27. November 2017
- Deutsch
- Abmessung: 244mm x 176mm x 62mm
- Gewicht: 2113g
- ISBN-13: 9783836260732
- ISBN-10: 3836260735
- Artikelnr.: 48984829
- Herstellerkennzeichnung Die Herstellerinformationen sind derzeit nicht verfügbar.
Jürgen Sieben ist inhabender Geschäftsführer der ConDeS GmbH. Er beschäftigt sich mit der Entwicklung und Parametrierung von Software, Computerberatung und Systemanalyse für namhafte Kunden wie T-Mobile und Metro AG. Zudem schult er Datenbanktechnologien, z. B. alle relevanten Oracle-Bereiche (Einführung, SQL, PL/SQL, Administration, Performance, Backup & Recovery, Datawarehousing etc.). Seit 2008 ist er Dozent an der Hochschule der Medien Stuttgart.
1. Einführung ... 21
1.1 ... Für wen ist dieses Buch geschrieben? ... 21
1.2 ... Der Aufbau des Buches ... 24
1.3 ... Vorwort zur zweiten Auflage ... 32
1.4 ... Vorwort zur dritten Auflage ... 33
1.5 ... Danksagung ... 34
2. Verwendete Werkzeuge und Ressourcen ... 35
2.1 ... Oracles Online-Dokumentation ... 35
2.2 ... Aufsetzen einer Beispieldatenbank ... 41
2.3 ... SQL*Plus ... 43
2.4 ... SQLCL ... 45
2.5 ... SQL Developer ... 45
2.6 ... »explain plan« ... 46
2.7 ... Autotrace ... 48
2.8 ... RunStats ... 50
2.9 ... Trace und TKProf ... 51
2.10 ... Debugger ... 55
2.11 ... Weitere Werkzeuge ... 56
2.12 ... Die Beispielskripte ... 57
TEIL I Grundlagen ... 59
3. Aufbau der Datenbank aus Sicht eines Programmierers ... 61
3.1 ... Grundlegende Arbeitsweise der Datenbank ... 61
3.2 ... Logischer Aufbau: Schema, Tablespace & Co. ... 71
3.3 ... Die physikalische Datenbank ... 82
3.4 ... Instanz und Speicherstrukturen ... 88
3.5 ... Start der Datenbank ... 98
3.6 ... Verbindungsaufbau zur Datenbank ... 99
4. Datenbankobjekte und SQL ... 119
4.1 ... Tabellen ... 119
4.2 ... Index ... 125
4.3 ... Views und Materialized Views ... 134
4.4 ... PL/SQL-Programm ... 137
4.5 ... Sonstige Datenbankobjekte ... 138
4.6 ... Exkurs: Zeichensatzcodierung ... 144
4.7 ... Mächtigkeit von SQL ... 150
5. Datensicherheit, -konsistenz und Transaktion ... 163
5.1 ... Lese- und Schreibkonsistenz ... 164
5.2 ... Transaktion ... 168
5.3 ... Datenkonsistenz und referenzielle Integrität ... 172
5.4 ... Explizites Sperren von Daten durch die Anwendung ... 186
5.5 ... Verarbeitung einer SQL-Anweisung ... 193
5.6 ... Die Sperrmechanismen von Oracle ... 199
5.7 ... Datensicherheit ... 200
5.8 ... Workshop: Einfluss der Programmierung ... 203
6. Programmierung der Datenbank ... 217
6.1 ... Erweiterung der Datenbankfunktionalität ... 217
6.2 ... Programmierung der Datenkonsistenz ... 219
6.3 ... Programmierung der Datensicherheit ... 226
6.4 ... Anwendungsprogrammierung mit PL/SQL ... 230
6.5 ... Unterstützung der Administration durch PL/SQL ... 236
TEIL II Die Sprache PL/SQL ... 241
7. Die Blockstruktur und Syntax von PL/SQL ... 243
7.1 ... Das Grundgerüst: der PL/SQL-Block ... 244
7.2 ... Prozeduren ... 251
7.3 ... Funktionen ... 267
7.4 ... Datenbanktrigger ... 271
7.5 ... Packages ... 272
7.6 ... Ausführungsrechte von PL/SQL-Blöcken ... 277
7.7 ... Compiler-Anweisungen (Pragma) ... 280
7.8 ... Best Practices ... 282
8. Kontrollstrukturen ... 285
8.1 ... Auswertende Anweisung 1 (»if then else«-Anweisung) ... 285
8.2 ... Auswertende Anweisung 2 (»case«-Anweisung) ... 287
8.3 ... Einfache Schleifen ... 291
8.4 ... Konditionale Kompilierung ... 298
8.5 ... Aus der Mottenkiste: Konzepte, die Sie nicht verwenden sollten ... 303
9. Datentypen in PL/SQL ... 309
9.1 ... PL/SQL-Datentypen ... 309
9.2 ... Kollektionen in PL/SQL ... 319
9.3 ... Cursor ... 340
9.4 ... Pipelined Function ... 368
10. Dynamisches SQL ... 379
10.1 ... Dynamisches SQL mittels »execute immediate« ... 379
10.2 ... Dynamisches SQL mit Cursor-Variablen ... 383
10.3 ... Workshop: Erstellung einer Prozedur als Schnittstelle zu einem externen Programm ... 384
10.4 ... DBMS_SQL-Package ... 389
10.5 ... Sicherheit bei dynamischem SQL ... 404
11. Events in der Datenbank: Programmierung von Triggern ... 411
11.1 ... DML-Trigger ... 411
11.2 ... »instead of«-Trigger ... 432
11.3 ... Einsatzbereiche von DML-Triggern ... 435
11.4 ... Wann Sie DML-Trigger nicht verwenden sollten ... 458
11.5 ... Datenbanktrigger ... 461
11.6 ... Zusammenfassung ... 473
12. Packages ... 477
12.1 ... Trennung von öffentlicher und privater Logik ... 477
12.2 ... Überladung in Packages ... 490
12.3 ... Ausführungsrechte von Packages ... 497
12.4 ... Packages und die Dependency Chain ... 502
12.5 ... Verschlüsselung von Package-Code ... 509
12.6 ... Oracle-Packages ... 514
12.7 ... Workshop: Verwaltung von Anwendungsparametern ... 527
13. Erweiterung von SQL ... 549
13.1 ... Wann SQL erweitert werden sollte ... 549
13.2 ... SQL mit eigenen Funktionen erweitern ... 555
13.3 ... Workshop: Berechnung der Fakultät ... 565
13.4 ... Gruppenfunktionen selbst erstellen ... 575
13.5 ... Workshop: Code-Generator für Gruppenfunktionen ... 585
14. Exception ... 603
14.1 ... Oracle-Fehler ... 603
14.2 ... Applikationsfehler erstellen und bearbeiten ... 616
14.3 ... Workshop: Zentralisierter Fehler-Handler mit einem Trigger ... 627
14.4 ... Zusammenfassung ... 632
TEIL III PL/SQL im Einsatz ... 633
15. Arbeiten mit LOBs (Large Objects) ... 635
15.1 ... Technische Struktur ... 636
15.2 ... Die Datentypen »CLOB«, »NCLOB«, »BLOB« und »BFILE« ... 651
15.3 ... Das Package »DBMS_LOB« ... 655
15.4 ... Workshop: Hilfsfunktionen zum Arbeiten mit LOBs ... 661
16. Arbeiten mit XML und JSON ... 671
16.1 ... Der Datentyp »XMLType« ... 672
16.2 ... Die Speicherung von XML-Daten in der Datenbank ... 680
16.3 ... XML aus relationalen Daten erzeugen ... 683
16.4 ... Relationale Daten aus XML extrahieren ... 698
16.5 ... XML mit PL/SQL verarbeiten ... 704
16.6 ... Die XML-Datenbank ... 716
16.7 ... JSON ... 741
17. Objektorientierung ... 759
17.1 ... Einführung in die Objektorientierung ... 761
17.2 ... Objektorientierte Datentypen ... 772
17.3 ... Objektorientierte Datenmodelle ... 783
17.4 ... Workshop: Der Datentyp »MoneyType« ... 787
17.5 ... Objektorientierte Anwendungsentwicklung und relationale Datenbanken ... 808
18. Integration von Oracle in Applikationen ... 839
18.1 ... Sperrung von Daten bei der Datenänderung ... 840
18.2 ... Speicherung von Session-Informationen ... 858
18.3 ... Zugriff auf Daten über PL/SQL-Packages ... 877
18.4 ... Workshop: Keimzelle einer sicheren Datenbankanwendung ... 880
19. Performance-Tuning und Code-Analyse ... 901
19.1 ... Regeln zur Performance-Optimierung ... 902
19.2 ... Optimierungsmöglichkeiten von PL/SQL ... 910
19.3 ... Compiler-Warnungen ... 923
19.4 ... PL/Scope ... 927
19.5 ... PL/SQL Hierarchical Profiler ... 934
19.6 ... Den Speicherverbrauch von PL/SQL überwachen ... 953
20. Workshop: PL/SQL Instrumentation Toolkit (PIT) ... 957
20.1 ... Überblick: die Idee und die Architektur ... 957
20.2 ... Beschreibung der einzelnen Komponenten ... 966
20.3 ... Implementierung des PIT-Administrationspackages ... 1006
20.4 ... Weitere Ausgabemodule ... 1026
Index ... 1041
1.1 ... Für wen ist dieses Buch geschrieben? ... 21
1.2 ... Der Aufbau des Buches ... 24
1.3 ... Vorwort zur zweiten Auflage ... 32
1.4 ... Vorwort zur dritten Auflage ... 33
1.5 ... Danksagung ... 34
2. Verwendete Werkzeuge und Ressourcen ... 35
2.1 ... Oracles Online-Dokumentation ... 35
2.2 ... Aufsetzen einer Beispieldatenbank ... 41
2.3 ... SQL*Plus ... 43
2.4 ... SQLCL ... 45
2.5 ... SQL Developer ... 45
2.6 ... »explain plan« ... 46
2.7 ... Autotrace ... 48
2.8 ... RunStats ... 50
2.9 ... Trace und TKProf ... 51
2.10 ... Debugger ... 55
2.11 ... Weitere Werkzeuge ... 56
2.12 ... Die Beispielskripte ... 57
TEIL I Grundlagen ... 59
3. Aufbau der Datenbank aus Sicht eines Programmierers ... 61
3.1 ... Grundlegende Arbeitsweise der Datenbank ... 61
3.2 ... Logischer Aufbau: Schema, Tablespace & Co. ... 71
3.3 ... Die physikalische Datenbank ... 82
3.4 ... Instanz und Speicherstrukturen ... 88
3.5 ... Start der Datenbank ... 98
3.6 ... Verbindungsaufbau zur Datenbank ... 99
4. Datenbankobjekte und SQL ... 119
4.1 ... Tabellen ... 119
4.2 ... Index ... 125
4.3 ... Views und Materialized Views ... 134
4.4 ... PL/SQL-Programm ... 137
4.5 ... Sonstige Datenbankobjekte ... 138
4.6 ... Exkurs: Zeichensatzcodierung ... 144
4.7 ... Mächtigkeit von SQL ... 150
5. Datensicherheit, -konsistenz und Transaktion ... 163
5.1 ... Lese- und Schreibkonsistenz ... 164
5.2 ... Transaktion ... 168
5.3 ... Datenkonsistenz und referenzielle Integrität ... 172
5.4 ... Explizites Sperren von Daten durch die Anwendung ... 186
5.5 ... Verarbeitung einer SQL-Anweisung ... 193
5.6 ... Die Sperrmechanismen von Oracle ... 199
5.7 ... Datensicherheit ... 200
5.8 ... Workshop: Einfluss der Programmierung ... 203
6. Programmierung der Datenbank ... 217
6.1 ... Erweiterung der Datenbankfunktionalität ... 217
6.2 ... Programmierung der Datenkonsistenz ... 219
6.3 ... Programmierung der Datensicherheit ... 226
6.4 ... Anwendungsprogrammierung mit PL/SQL ... 230
6.5 ... Unterstützung der Administration durch PL/SQL ... 236
TEIL II Die Sprache PL/SQL ... 241
7. Die Blockstruktur und Syntax von PL/SQL ... 243
7.1 ... Das Grundgerüst: der PL/SQL-Block ... 244
7.2 ... Prozeduren ... 251
7.3 ... Funktionen ... 267
7.4 ... Datenbanktrigger ... 271
7.5 ... Packages ... 272
7.6 ... Ausführungsrechte von PL/SQL-Blöcken ... 277
7.7 ... Compiler-Anweisungen (Pragma) ... 280
7.8 ... Best Practices ... 282
8. Kontrollstrukturen ... 285
8.1 ... Auswertende Anweisung 1 (»if then else«-Anweisung) ... 285
8.2 ... Auswertende Anweisung 2 (»case«-Anweisung) ... 287
8.3 ... Einfache Schleifen ... 291
8.4 ... Konditionale Kompilierung ... 298
8.5 ... Aus der Mottenkiste: Konzepte, die Sie nicht verwenden sollten ... 303
9. Datentypen in PL/SQL ... 309
9.1 ... PL/SQL-Datentypen ... 309
9.2 ... Kollektionen in PL/SQL ... 319
9.3 ... Cursor ... 340
9.4 ... Pipelined Function ... 368
10. Dynamisches SQL ... 379
10.1 ... Dynamisches SQL mittels »execute immediate« ... 379
10.2 ... Dynamisches SQL mit Cursor-Variablen ... 383
10.3 ... Workshop: Erstellung einer Prozedur als Schnittstelle zu einem externen Programm ... 384
10.4 ... DBMS_SQL-Package ... 389
10.5 ... Sicherheit bei dynamischem SQL ... 404
11. Events in der Datenbank: Programmierung von Triggern ... 411
11.1 ... DML-Trigger ... 411
11.2 ... »instead of«-Trigger ... 432
11.3 ... Einsatzbereiche von DML-Triggern ... 435
11.4 ... Wann Sie DML-Trigger nicht verwenden sollten ... 458
11.5 ... Datenbanktrigger ... 461
11.6 ... Zusammenfassung ... 473
12. Packages ... 477
12.1 ... Trennung von öffentlicher und privater Logik ... 477
12.2 ... Überladung in Packages ... 490
12.3 ... Ausführungsrechte von Packages ... 497
12.4 ... Packages und die Dependency Chain ... 502
12.5 ... Verschlüsselung von Package-Code ... 509
12.6 ... Oracle-Packages ... 514
12.7 ... Workshop: Verwaltung von Anwendungsparametern ... 527
13. Erweiterung von SQL ... 549
13.1 ... Wann SQL erweitert werden sollte ... 549
13.2 ... SQL mit eigenen Funktionen erweitern ... 555
13.3 ... Workshop: Berechnung der Fakultät ... 565
13.4 ... Gruppenfunktionen selbst erstellen ... 575
13.5 ... Workshop: Code-Generator für Gruppenfunktionen ... 585
14. Exception ... 603
14.1 ... Oracle-Fehler ... 603
14.2 ... Applikationsfehler erstellen und bearbeiten ... 616
14.3 ... Workshop: Zentralisierter Fehler-Handler mit einem Trigger ... 627
14.4 ... Zusammenfassung ... 632
TEIL III PL/SQL im Einsatz ... 633
15. Arbeiten mit LOBs (Large Objects) ... 635
15.1 ... Technische Struktur ... 636
15.2 ... Die Datentypen »CLOB«, »NCLOB«, »BLOB« und »BFILE« ... 651
15.3 ... Das Package »DBMS_LOB« ... 655
15.4 ... Workshop: Hilfsfunktionen zum Arbeiten mit LOBs ... 661
16. Arbeiten mit XML und JSON ... 671
16.1 ... Der Datentyp »XMLType« ... 672
16.2 ... Die Speicherung von XML-Daten in der Datenbank ... 680
16.3 ... XML aus relationalen Daten erzeugen ... 683
16.4 ... Relationale Daten aus XML extrahieren ... 698
16.5 ... XML mit PL/SQL verarbeiten ... 704
16.6 ... Die XML-Datenbank ... 716
16.7 ... JSON ... 741
17. Objektorientierung ... 759
17.1 ... Einführung in die Objektorientierung ... 761
17.2 ... Objektorientierte Datentypen ... 772
17.3 ... Objektorientierte Datenmodelle ... 783
17.4 ... Workshop: Der Datentyp »MoneyType« ... 787
17.5 ... Objektorientierte Anwendungsentwicklung und relationale Datenbanken ... 808
18. Integration von Oracle in Applikationen ... 839
18.1 ... Sperrung von Daten bei der Datenänderung ... 840
18.2 ... Speicherung von Session-Informationen ... 858
18.3 ... Zugriff auf Daten über PL/SQL-Packages ... 877
18.4 ... Workshop: Keimzelle einer sicheren Datenbankanwendung ... 880
19. Performance-Tuning und Code-Analyse ... 901
19.1 ... Regeln zur Performance-Optimierung ... 902
19.2 ... Optimierungsmöglichkeiten von PL/SQL ... 910
19.3 ... Compiler-Warnungen ... 923
19.4 ... PL/Scope ... 927
19.5 ... PL/SQL Hierarchical Profiler ... 934
19.6 ... Den Speicherverbrauch von PL/SQL überwachen ... 953
20. Workshop: PL/SQL Instrumentation Toolkit (PIT) ... 957
20.1 ... Überblick: die Idee und die Architektur ... 957
20.2 ... Beschreibung der einzelnen Komponenten ... 966
20.3 ... Implementierung des PIT-Administrationspackages ... 1006
20.4 ... Weitere Ausgabemodule ... 1026
Index ... 1041
1. Einführung ... 21
1.1 ... Für wen ist dieses Buch geschrieben? ... 21
1.2 ... Der Aufbau des Buches ... 24
1.3 ... Vorwort zur zweiten Auflage ... 32
1.4 ... Vorwort zur dritten Auflage ... 33
1.5 ... Danksagung ... 34
2. Verwendete Werkzeuge und Ressourcen ... 35
2.1 ... Oracles Online-Dokumentation ... 35
2.2 ... Aufsetzen einer Beispieldatenbank ... 41
2.3 ... SQL*Plus ... 43
2.4 ... SQLCL ... 45
2.5 ... SQL Developer ... 45
2.6 ... »explain plan« ... 46
2.7 ... Autotrace ... 48
2.8 ... RunStats ... 50
2.9 ... Trace und TKProf ... 51
2.10 ... Debugger ... 55
2.11 ... Weitere Werkzeuge ... 56
2.12 ... Die Beispielskripte ... 57
TEIL I Grundlagen ... 59
3. Aufbau der Datenbank aus Sicht eines Programmierers ... 61
3.1 ... Grundlegende Arbeitsweise der Datenbank ... 61
3.2 ... Logischer Aufbau: Schema, Tablespace & Co. ... 71
3.3 ... Die physikalische Datenbank ... 82
3.4 ... Instanz und Speicherstrukturen ... 88
3.5 ... Start der Datenbank ... 98
3.6 ... Verbindungsaufbau zur Datenbank ... 99
4. Datenbankobjekte und SQL ... 119
4.1 ... Tabellen ... 119
4.2 ... Index ... 125
4.3 ... Views und Materialized Views ... 134
4.4 ... PL/SQL-Programm ... 137
4.5 ... Sonstige Datenbankobjekte ... 138
4.6 ... Exkurs: Zeichensatzcodierung ... 144
4.7 ... Mächtigkeit von SQL ... 150
5. Datensicherheit, -konsistenz und Transaktion ... 163
5.1 ... Lese- und Schreibkonsistenz ... 164
5.2 ... Transaktion ... 168
5.3 ... Datenkonsistenz und referenzielle Integrität ... 172
5.4 ... Explizites Sperren von Daten durch die Anwendung ... 186
5.5 ... Verarbeitung einer SQL-Anweisung ... 193
5.6 ... Die Sperrmechanismen von Oracle ... 199
5.7 ... Datensicherheit ... 200
5.8 ... Workshop: Einfluss der Programmierung ... 203
6. Programmierung der Datenbank ... 217
6.1 ... Erweiterung der Datenbankfunktionalität ... 217
6.2 ... Programmierung der Datenkonsistenz ... 219
6.3 ... Programmierung der Datensicherheit ... 226
6.4 ... Anwendungsprogrammierung mit PL/SQL ... 230
6.5 ... Unterstützung der Administration durch PL/SQL ... 236
TEIL II Die Sprache PL/SQL ... 241
7. Die Blockstruktur und Syntax von PL/SQL ... 243
7.1 ... Das Grundgerüst: der PL/SQL-Block ... 244
7.2 ... Prozeduren ... 251
7.3 ... Funktionen ... 267
7.4 ... Datenbanktrigger ... 271
7.5 ... Packages ... 272
7.6 ... Ausführungsrechte von PL/SQL-Blöcken ... 277
7.7 ... Compiler-Anweisungen (Pragma) ... 280
7.8 ... Best Practices ... 282
8. Kontrollstrukturen ... 285
8.1 ... Auswertende Anweisung 1 (»if then else«-Anweisung) ... 285
8.2 ... Auswertende Anweisung 2 (»case«-Anweisung) ... 287
8.3 ... Einfache Schleifen ... 291
8.4 ... Konditionale Kompilierung ... 298
8.5 ... Aus der Mottenkiste: Konzepte, die Sie nicht verwenden sollten ... 303
9. Datentypen in PL/SQL ... 309
9.1 ... PL/SQL-Datentypen ... 309
9.2 ... Kollektionen in PL/SQL ... 319
9.3 ... Cursor ... 340
9.4 ... Pipelined Function ... 368
10. Dynamisches SQL ... 379
10.1 ... Dynamisches SQL mittels »execute immediate« ... 379
10.2 ... Dynamisches SQL mit Cursor-Variablen ... 383
10.3 ... Workshop: Erstellung einer Prozedur als Schnittstelle zu einem externen Programm ... 384
10.4 ... DBMS_SQL-Package ... 389
10.5 ... Sicherheit bei dynamischem SQL ... 404
11. Events in der Datenbank: Programmierung von Triggern ... 411
11.1 ... DML-Trigger ... 411
11.2 ... »instead of«-Trigger ... 432
11.3 ... Einsatzbereiche von DML-Triggern ... 435
11.4 ... Wann Sie DML-Trigger nicht verwenden sollten ... 458
11.5 ... Datenbanktrigger ... 461
11.6 ... Zusammenfassung ... 473
12. Packages ... 477
12.1 ... Trennung von öffentlicher und privater Logik ... 477
12.2 ... Überladung in Packages ... 490
12.3 ... Ausführungsrechte von Packages ... 497
12.4 ... Packages und die Dependency Chain ... 502
12.5 ... Verschlüsselung von Package-Code ... 509
12.6 ... Oracle-Packages ... 514
12.7 ... Workshop: Verwaltung von Anwendungsparametern ... 527
13. Erweiterung von SQL ... 549
13.1 ... Wann SQL erweitert werden sollte ... 549
13.2 ... SQL mit eigenen Funktionen erweitern ... 555
13.3 ... Workshop: Berechnung der Fakultät ... 565
13.4 ... Gruppenfunktionen selbst erstellen ... 575
13.5 ... Workshop: Code-Generator für Gruppenfunktionen ... 585
14. Exception ... 603
14.1 ... Oracle-Fehler ... 603
14.2 ... Applikationsfehler erstellen und bearbeiten ... 616
14.3 ... Workshop: Zentralisierter Fehler-Handler mit einem Trigger ... 627
14.4 ... Zusammenfassung ... 632
TEIL III PL/SQL im Einsatz ... 633
15. Arbeiten mit LOBs (Large Objects) ... 635
15.1 ... Technische Struktur ... 636
15.2 ... Die Datentypen »CLOB«, »NCLOB«, »BLOB« und »BFILE« ... 651
15.3 ... Das Package »DBMS_LOB« ... 655
15.4 ... Workshop: Hilfsfunktionen zum Arbeiten mit LOBs ... 661
16. Arbeiten mit XML und JSON ... 671
16.1 ... Der Datentyp »XMLType« ... 672
16.2 ... Die Speicherung von XML-Daten in der Datenbank ... 680
16.3 ... XML aus relationalen Daten erzeugen ... 683
16.4 ... Relationale Daten aus XML extrahieren ... 698
16.5 ... XML mit PL/SQL verarbeiten ... 704
16.6 ... Die XML-Datenbank ... 716
16.7 ... JSON ... 741
17. Objektorientierung ... 759
17.1 ... Einführung in die Objektorientierung ... 761
17.2 ... Objektorientierte Datentypen ... 772
17.3 ... Objektorientierte Datenmodelle ... 783
17.4 ... Workshop: Der Datentyp »MoneyType« ... 787
17.5 ... Objektorientierte Anwendungsentwicklung und relationale Datenbanken ... 808
18. Integration von Oracle in Applikationen ... 839
18.1 ... Sperrung von Daten bei der Datenänderung ... 840
18.2 ... Speicherung von Session-Informationen ... 858
18.3 ... Zugriff auf Daten über PL/SQL-Packages ... 877
18.4 ... Workshop: Keimzelle einer sicheren Datenbankanwendung ... 880
19. Performance-Tuning und Code-Analyse ... 901
19.1 ... Regeln zur Performance-Optimierung ... 902
19.2 ... Optimierungsmöglichkeiten von PL/SQL ... 910
19.3 ... Compiler-Warnungen ... 923
19.4 ... PL/Scope ... 927
19.5 ... PL/SQL Hierarchical Profiler ... 934
19.6 ... Den Speicherverbrauch von PL/SQL überwachen ... 953
20. Workshop: PL/SQL Instrumentation Toolkit (PIT) ... 957
20.1 ... Überblick: die Idee und die Architektur ... 957
20.2 ... Beschreibung der einzelnen Komponenten ... 966
20.3 ... Implementierung des PIT-Administrationspackages ... 1006
20.4 ... Weitere Ausgabemodule ... 1026
Index ... 1041
1.1 ... Für wen ist dieses Buch geschrieben? ... 21
1.2 ... Der Aufbau des Buches ... 24
1.3 ... Vorwort zur zweiten Auflage ... 32
1.4 ... Vorwort zur dritten Auflage ... 33
1.5 ... Danksagung ... 34
2. Verwendete Werkzeuge und Ressourcen ... 35
2.1 ... Oracles Online-Dokumentation ... 35
2.2 ... Aufsetzen einer Beispieldatenbank ... 41
2.3 ... SQL*Plus ... 43
2.4 ... SQLCL ... 45
2.5 ... SQL Developer ... 45
2.6 ... »explain plan« ... 46
2.7 ... Autotrace ... 48
2.8 ... RunStats ... 50
2.9 ... Trace und TKProf ... 51
2.10 ... Debugger ... 55
2.11 ... Weitere Werkzeuge ... 56
2.12 ... Die Beispielskripte ... 57
TEIL I Grundlagen ... 59
3. Aufbau der Datenbank aus Sicht eines Programmierers ... 61
3.1 ... Grundlegende Arbeitsweise der Datenbank ... 61
3.2 ... Logischer Aufbau: Schema, Tablespace & Co. ... 71
3.3 ... Die physikalische Datenbank ... 82
3.4 ... Instanz und Speicherstrukturen ... 88
3.5 ... Start der Datenbank ... 98
3.6 ... Verbindungsaufbau zur Datenbank ... 99
4. Datenbankobjekte und SQL ... 119
4.1 ... Tabellen ... 119
4.2 ... Index ... 125
4.3 ... Views und Materialized Views ... 134
4.4 ... PL/SQL-Programm ... 137
4.5 ... Sonstige Datenbankobjekte ... 138
4.6 ... Exkurs: Zeichensatzcodierung ... 144
4.7 ... Mächtigkeit von SQL ... 150
5. Datensicherheit, -konsistenz und Transaktion ... 163
5.1 ... Lese- und Schreibkonsistenz ... 164
5.2 ... Transaktion ... 168
5.3 ... Datenkonsistenz und referenzielle Integrität ... 172
5.4 ... Explizites Sperren von Daten durch die Anwendung ... 186
5.5 ... Verarbeitung einer SQL-Anweisung ... 193
5.6 ... Die Sperrmechanismen von Oracle ... 199
5.7 ... Datensicherheit ... 200
5.8 ... Workshop: Einfluss der Programmierung ... 203
6. Programmierung der Datenbank ... 217
6.1 ... Erweiterung der Datenbankfunktionalität ... 217
6.2 ... Programmierung der Datenkonsistenz ... 219
6.3 ... Programmierung der Datensicherheit ... 226
6.4 ... Anwendungsprogrammierung mit PL/SQL ... 230
6.5 ... Unterstützung der Administration durch PL/SQL ... 236
TEIL II Die Sprache PL/SQL ... 241
7. Die Blockstruktur und Syntax von PL/SQL ... 243
7.1 ... Das Grundgerüst: der PL/SQL-Block ... 244
7.2 ... Prozeduren ... 251
7.3 ... Funktionen ... 267
7.4 ... Datenbanktrigger ... 271
7.5 ... Packages ... 272
7.6 ... Ausführungsrechte von PL/SQL-Blöcken ... 277
7.7 ... Compiler-Anweisungen (Pragma) ... 280
7.8 ... Best Practices ... 282
8. Kontrollstrukturen ... 285
8.1 ... Auswertende Anweisung 1 (»if then else«-Anweisung) ... 285
8.2 ... Auswertende Anweisung 2 (»case«-Anweisung) ... 287
8.3 ... Einfache Schleifen ... 291
8.4 ... Konditionale Kompilierung ... 298
8.5 ... Aus der Mottenkiste: Konzepte, die Sie nicht verwenden sollten ... 303
9. Datentypen in PL/SQL ... 309
9.1 ... PL/SQL-Datentypen ... 309
9.2 ... Kollektionen in PL/SQL ... 319
9.3 ... Cursor ... 340
9.4 ... Pipelined Function ... 368
10. Dynamisches SQL ... 379
10.1 ... Dynamisches SQL mittels »execute immediate« ... 379
10.2 ... Dynamisches SQL mit Cursor-Variablen ... 383
10.3 ... Workshop: Erstellung einer Prozedur als Schnittstelle zu einem externen Programm ... 384
10.4 ... DBMS_SQL-Package ... 389
10.5 ... Sicherheit bei dynamischem SQL ... 404
11. Events in der Datenbank: Programmierung von Triggern ... 411
11.1 ... DML-Trigger ... 411
11.2 ... »instead of«-Trigger ... 432
11.3 ... Einsatzbereiche von DML-Triggern ... 435
11.4 ... Wann Sie DML-Trigger nicht verwenden sollten ... 458
11.5 ... Datenbanktrigger ... 461
11.6 ... Zusammenfassung ... 473
12. Packages ... 477
12.1 ... Trennung von öffentlicher und privater Logik ... 477
12.2 ... Überladung in Packages ... 490
12.3 ... Ausführungsrechte von Packages ... 497
12.4 ... Packages und die Dependency Chain ... 502
12.5 ... Verschlüsselung von Package-Code ... 509
12.6 ... Oracle-Packages ... 514
12.7 ... Workshop: Verwaltung von Anwendungsparametern ... 527
13. Erweiterung von SQL ... 549
13.1 ... Wann SQL erweitert werden sollte ... 549
13.2 ... SQL mit eigenen Funktionen erweitern ... 555
13.3 ... Workshop: Berechnung der Fakultät ... 565
13.4 ... Gruppenfunktionen selbst erstellen ... 575
13.5 ... Workshop: Code-Generator für Gruppenfunktionen ... 585
14. Exception ... 603
14.1 ... Oracle-Fehler ... 603
14.2 ... Applikationsfehler erstellen und bearbeiten ... 616
14.3 ... Workshop: Zentralisierter Fehler-Handler mit einem Trigger ... 627
14.4 ... Zusammenfassung ... 632
TEIL III PL/SQL im Einsatz ... 633
15. Arbeiten mit LOBs (Large Objects) ... 635
15.1 ... Technische Struktur ... 636
15.2 ... Die Datentypen »CLOB«, »NCLOB«, »BLOB« und »BFILE« ... 651
15.3 ... Das Package »DBMS_LOB« ... 655
15.4 ... Workshop: Hilfsfunktionen zum Arbeiten mit LOBs ... 661
16. Arbeiten mit XML und JSON ... 671
16.1 ... Der Datentyp »XMLType« ... 672
16.2 ... Die Speicherung von XML-Daten in der Datenbank ... 680
16.3 ... XML aus relationalen Daten erzeugen ... 683
16.4 ... Relationale Daten aus XML extrahieren ... 698
16.5 ... XML mit PL/SQL verarbeiten ... 704
16.6 ... Die XML-Datenbank ... 716
16.7 ... JSON ... 741
17. Objektorientierung ... 759
17.1 ... Einführung in die Objektorientierung ... 761
17.2 ... Objektorientierte Datentypen ... 772
17.3 ... Objektorientierte Datenmodelle ... 783
17.4 ... Workshop: Der Datentyp »MoneyType« ... 787
17.5 ... Objektorientierte Anwendungsentwicklung und relationale Datenbanken ... 808
18. Integration von Oracle in Applikationen ... 839
18.1 ... Sperrung von Daten bei der Datenänderung ... 840
18.2 ... Speicherung von Session-Informationen ... 858
18.3 ... Zugriff auf Daten über PL/SQL-Packages ... 877
18.4 ... Workshop: Keimzelle einer sicheren Datenbankanwendung ... 880
19. Performance-Tuning und Code-Analyse ... 901
19.1 ... Regeln zur Performance-Optimierung ... 902
19.2 ... Optimierungsmöglichkeiten von PL/SQL ... 910
19.3 ... Compiler-Warnungen ... 923
19.4 ... PL/Scope ... 927
19.5 ... PL/SQL Hierarchical Profiler ... 934
19.6 ... Den Speicherverbrauch von PL/SQL überwachen ... 953
20. Workshop: PL/SQL Instrumentation Toolkit (PIT) ... 957
20.1 ... Überblick: die Idee und die Architektur ... 957
20.2 ... Beschreibung der einzelnen Komponenten ... 966
20.3 ... Implementierung des PIT-Administrationspackages ... 1006
20.4 ... Weitere Ausgabemodule ... 1026
Index ... 1041