Suchen und Finden
Inhaltsverzeichnis
6
Vorwort
13
1. Einführung
20
1. 1. Beispieldatenbank
20
1. 1. 1. Entitäten
20
1. 1. 2. Szenario
21
1. 1. 3. Tabellen und Beziehungen
25
1. 2. Einrichtung der Umgebung
27
1. 2. 1. Oracle Database 10g Express Edition
27
1. 2. 2. Entwicklungsumgebung
31
1. 2. 2. 1 Oracle SQL Developer
31
1. 2. 2. 2 Oracle SQL Developer Data Modeler
33
1. 3. Einrichtung der Beispiel-Datenbank
34
1. 3. 1. Dateien
34
1. 3. 2. Tabellen und Daten aufspielen
35
2. Einführung in PL/SQL
39
2. 1. Wozu überhaupt PL/SQL?
39
2. 1. 1. SQL- und PL/SQL-Variante eines Datenzugriffs
39
2. 1. 2. Architektur von PL/SQL-Anwendungen
42
2. 2. Die Struktur von PL/SQL
46
2. 2. 1. Schreibweise und Benennungskonventionen für Variablen
46
2. 2. 2. Blockstruktur
48
2. 2. 3. Einsatzbereiche von PL/SQL
50
2. 2. 4. Guter Programmierstil: Kommentare und Formatierungen
52
3. Grundlegende Syntaxvorstellung
58
3. 1. Basis-Syntax
58
3. 1. 1. Gültige Zeichenmenge
58
3. 1. 2. Literale
59
3. 1. 2. 1 Literale: Anführungszeichen
60
3. 1. 2. 2 Literale: Boolesche Werte
61
3. 1. 2. 3 Literale: Zahlen
62
3. 2. Variablen
63
3. 2. 1. Deklaration
64
3. 2. 2. Verwendung von %TYPE
65
3. 2. 3. Vererbung von Datentypen
66
3. 2. 4. Gültigkeit und Sichtbarkeit
66
3. 3. Datentypen und Operatoren
70
3. 3. 1. Oracle- und PL/SQL-Datentypen
71
3. 3. 2. Subtypen – Eigene Datentypen
73
3. 3. 3. Automatische und explizite Typumwandlung
75
3. 3. 4. Operatoren
79
3. 4. Ausgabemöglichkeiten im Puffer und in Dateien
82
3. 4. 1. Puffer-Ausgaben mit DBMS_OUTPUT
82
3. 4. 2. Datei-Ausgaben mit UTL_FILE
87
3. 4. 2. 1 Einrichten eines Verzeichnisses
88
3. 4. 2. 2 In Dateien schreiben und aus Dateien lesen
90
3. 4. 3. Ausnahmen des UTL_FILE-Pakets
95
3. 4. 4. Textformatierungen und Ersetzungen
96
3. 5. Verzweigungen
99
3. 5. 1. IF-Verzweigung
100
3. 5. 2. IF-ELSE-Verzweigung
101
3. 5. 3. IF-ELSIF-ELSE-Verzweigung
102
3. 5. 4. CASE mit einzelnem Selektor
103
3. 5. 5. Ausnahmen bei CASE
104
3. 5. 6. Selektorlose CASE-Anweisung
105
3. 5. 7. Programmmuster bei Verzweigungen
106
3. 6. Schleifen
107
3. 6. 1. LOOP – Einfache Schleife
107
3. 6. 2. Schleifensteuerung mit EXIT und CONTINUE
108
3. 6. 3. Verschachtelte Schleifenkonstruktionen mit Labeln
109
3. 6. 4. WHILE-Schleife
111
3. 6. 5. Numerische FOR-Schleife
113
3. 7. Weitere Anweisungen
115
3. 7. 1. GOTO-Strukturen mit Labeln
115
3. 7. 1. 1 Beispiel
116
3. 7. 1. 2 Nutzung mit Schaltvariablen
119
3. 7. 2. NULL im Anweisungsabschnitt
123
3. 8. Datensätze und %RECORD
124
3. 9. Vorteile bei der Verwendung
125
3. 9. 1. Definition eines Datensatztyps
126
3. 9. 2. Verwendung von Datensätzen
128
3. 9. 3. Datensatz-Erzeugung mit %ROWTYPE
131
4. Transaktionssteuerung
134
4. 1. SQL in PL/SQL
134
4. 1. 1. Zulässigkeit von Anweisungen
134
4. 1. 2. Dynamisches SQL
135
4. 2. Kontextwechsel
137
4. 2. 1. Grundprinzip
138
4. 2. 2. Zugriffe über DB-Links
141
4. 2. 3. Einsatz von Synonymen
142
4. 2. 4. Aufruf von Pseudospalten
143
4. 3. Steuerung von Transaktionen
148
4. 3. 1. Grundproblem
148
4. 3. 2. Bestätigen und zurücksetzen von Anweisungen
150
4. 3. 3. Sicherungspunkte
154
4. 3. 4. Transaktionen festlegen
158
4. 3. 5. Tabellen sperren
160
5. Cursor und Mengen
164
5. 1. Prinzip von Cursorn
164
5. 1. 1. Erzeugen und verarbeiten
164
5. 1. 2. Cursor-Operationen
166
5. 2. Explizite Cursor
167
5. 2. 1. Deklaration
167
5. 2. 2. Verarbeitung
169
5. 2. 3. Cursor-Schleifen und Cursor-Attribute
173
5. 2. 4. Parametrisierte Cursor und Wertzuweisungen
178
5. 3. Implizite Cursor
180
5. 3. 1. Definition
180
5. 3. 2. Attribute
182
5. 3. 3. Beispiel
183
5. 3. 4. Zeilensperren im Cursor
185
5. 4. Cursor-Variablen
187
5. 4. 1. Deklaration
187
5. 4. 2. Verarbeitung
189
5. 5. Weitere Techniken
194
5. 5. 1. Cursor-Ausdrücke
194
5. 5. 2. Cursor-Ausnahmen
197
6. Fehler und Ausnahmen
199
6. 1. Einführung
199
6. 1. 1. Typologie von Ausnahmen
199
6. 1. 2. Allgemeine Funktionsweise von Ausnahmen
200
6. 1. 3. Vordefinierte Ausnahmen
203
6. 2. Selbst definierte Ausnahmen
205
6. 2. 1. Deklaration und Verwendung
205
6. 2. 2. Fehlermeldungen und Fehlerwerte
207
6. 2. 3. Fehler und Ausnahmen in verschachtelten Blöcken
210
6. 2. 4. Verschachtelte Blöcke und besondere Ausnahmen
213
6. 2. 5. Verwendung von Ausnahmen bei Schleifen und Blöcken
216
7. Collections und ihre Verarbeitung
222
7. 1. Collections
222
7. 1. 1. Typen
222
7. 1. 2. Assoziative Arrays (Index-By-Tabellen)
223
7. 1. 3. Verschachtelte Tabellen (Nested Tables)
226
7. 1. 4. Varrays
229
7. 1. 5. Multidimensionale Strukturen
230
7. 1. 6. Collection-Methoden
240
7. 1. 7. Ausnahmen und Collections
247
7. 2. Mengenbindung und Mengenverarbeitung
247
7. 2. 1. Bindungstypen
248
7. 2. 2. Leistungsunterschiede im Vergleich
249
7. 2. 3. Mengenübertragung mit FORALL
250
7. 2. 4. Verwendung von Cursor-Attributen
253
7. 2. 5. Ausnahmebehandlung bei der Mengenbindung
256
7. 2. 6. Mengenabfrage mit BULK COLLECT
259
7. 2. 7. Einsatz von RETURNING
263
8. Dynamisches SQL
268
8. 1. Einführung
268
8. 1. 1. Grundproblem
268
8. 1. 2. Verwendungszweck und Einsatzbereiche
270
8. 2. SQL-Befehle mit EXECUTE IMMEDIATE ausführen
270
8. 2. 1. Allgemeine Syntax
271
8. 2. 2. Beispiel
272
8. 3. Dynamisches SQL im Kontext
279
8. 3. 1. Verwendung von Cursor-Variablen
279
8. 3. 2. Mengenverarbeitung
282
8. 3. 3. Beispiele
284
9. Prozeduren und Funktionen
290
9. 1. Modulare Strukturen in PL/SQL
290
9. 1. 1. Typen von Modulen in PL/SQL
290
9. 1. 2. Parameter und Parameter-Modi
293
9. 1. 3. Fehlersuche und Korrektur
300
9. 1. 3. 1 Data-Dictionary-Abfragen
305
9. 1. 3. 2 Data-Dictionary-Sichten
305
9. 2. Funktionen und Prozeduren erstellen
307
9. 2. 1. Allgemeine Syntax für Funktionen
307
9. 2. 2. Blockstruktur von Funktionen
309
9. 2. 3. Entscheidungen für Parameter-Modi
314
9. 2. 4. Ausnahmebehandlung
318
9. 2. 5. Übergabe von Werten bei IN und IN OUT
321
9. 2. 6. Rückgaben mit RETURN
323
9. 2. 6. 1 Gültige Rückgabewerte bzw. -ausdrücke
323
9. 2. 6. 2 Mehrere Rückgabewerte durch Fallunterscheidungen
325
9. 2. 6. 3 Mehrere Rückgabewerte als fehlerhafte Deklaration
326
9. 2. 6. 4 Fehlender Rückgabewert
328
9. 2. 7. PL/SQL-Funktionen in SQL
329
9. 2. 7. 1 Bedingungen für verwendbare PL/SQL-Funktionen
329
9. 2. 7. 2 Einschränkungen und Gefahren
330
9. 2. 7. 3 Geeignete Funktionen und Anwendungsgebiete
331
9. 2. 7. 4 Aufruf von Spalten in PL/SQL-Funktionen
338
9. 3. Eigene Prozeduren verwenden
340
9. 3. 1. Die allgemeine Syntax von Prozeduren
340
9. 3. 2. Blockstruktur von Prozeduren
342
9. 3. 3. Speicherort von Prozeduren
344
9. 3. 4. Wahl der Parameter-Modi und Wertübergabe
345
9. 3. 4. 1 Aufruf von Prozeduren und Parameterübergabe
345
9. 3. 4. 2 Entscheidungen für Parameter-Modi
347
9. 3. 5. Ausnahmebehandlung für Prozeduren
350
9. 3. 6. Übergabe per Referenz und Wert
353
9. 4. Modul-Spezialitäten
354
9. 4. 1. Überladen von Modulen
354
9. 4. 1. 1 Grundvoraussetzungen für das Überladen
355
9. 4. 1. 2 Einsatzbereiche des Überladens
356
9. 4. 2. Vorwärtsdeklaration und Rekursion
358
9. 4. 2. 1 Rekursion von Funktionen
358
9. 4. 2. 2 Vorwärtsdeklaration
361
9. 4. 3. Einsatz von lokalen Modulen
364
9. 4. 3. 1 Funktionen als lokale Module
365
9. 4. 3. 2 Prozeduren als lokale Module
367
9. 4. 3. 3 Sichtbarkeit und Gültigkeit bei lokalen Modulen
368
10. Pakete
371
10. 1. Einführung
371
10. 1. 1. Definition und Strukturen
371
10. 1. 2. Vorteile durch die Verwendung von Paketen
372
10. 1. 3. Aufbau von Paketen
373
10. 1. 4. Sichtbarkeit und Gültigkeit
376
10. 2. Eigene Pakete
378
10. 2. 1. Ein Beispielpaket
378
10. 2. 2. Speicherort von Paketen und ihre Bearbeitung
381
10. 2. 3. Abhängigkeiten zwischen Körpern und Spezifikationen
382
10. 2. 4. Aufruf von Paketen
385
10. 2. 5. Öffentliche und private Elemente
387
10. 2. 6. Berechtigungskonzepte bei gespeicherten Unterprogrammen
389
10. 2. 6. 1 Benutzerrechte bei einzelnen Modulen
394
10. 2. 7. Beispiel-Programm: Testdaten-Erzeugung
394
10. 2. 7. 1 Sinn und Zweck der Testdaten-Erzeugung
395
10. 2. 7. 2 Modularisierung der Anforderungen
400
10. 2. 7. 3 Umsetzung der Anforderungen
407
10. 2. 7. 4 Ausführung und Test des Generators
419
10. 2. 8. Quelltextschutz und Verschlüsselung
420
10. 3. Eingebaute PL/SQL-Pakete
423
10. 3. 1. Systemüberwachung mit DBMS_UTILITY
424
10. 3. 1. 1 Datenbank-Version herausfinden
424
10. 3. 1. 2 Verarbeitung von kommagetrennten Werten
425
10. 3. 1. 3 Aktive Instanzen auszählen
427
10. 3. 2. Große Objekte mit DBMS_LOB bearbeiten
429
10. 3. 2. 1 Allgemeine Eigenschaften von LOBs
429
10. 3. 2. 2 Struktur des DBMS_LOB-Pakets
431
10. 3. 2. 3 Einsatz und Verwendung von internen LOBs
432
10. 3. 2. 4 Einsatz und Verwendung von externen LOBs
438
10. 3. 3. Zugriff auf den Shared Pool
440
10. 3. 4. Nachrichtenaustausch über Pipes
442
10. 3. 5. Datenaustausch via Alarme
446
10. 3. 6. Anwendungsoptimierung und -analyse von PL/SQL-Programmen
449
10. 3. 6. 1 Gefahrenquellen für verbesserungswürdige Leistungen
450
10. 3. 6. 2 Analysewerkzeuge für die Programmleistung
451
11. Trigger
470
11. 1. Einführung
470
11. 1. 1. Typologie
471
11. 1. 2. Einsatzbereiche
472
11. 1. 3. Einschränkungen
473
11. 2. Trigger programmieren
474
11. 2. 1. Allgemeine Trigger-Befehle
475
11. 2. 2. DML-Trigger
475
11. 2. 3. Syntax-Erweiterungen von Triggern
479
11. 2. 3. 1 Pseudodatensätze und die REFERENCING-Klausel
479
11. 2. 3. 2 Bedingungen für betroffene Zeilen
484
11. 2. 4. Instead-of-Trigger
487
11. 2. 5. System-Trigger
494
11. 2. 5. 1 Einsatz der WHEN-Klausel
505
Index
509
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.