Oracle PL/SQL

Oracle PL/SQL

von: Marco Skulschus, Marcus Wiederstein

comelio GmbH, 2010

ISBN: 9783939701460 , 522 Seiten

Format: PDF, OL

Kopierschutz: DRM

Windows PC,Mac OSX Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 29,95 EUR

Mehr zum Inhalt

Oracle PL/SQL


 

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