Das ist PL/SQL

Werbung
`i
ÀÊÎ
Ê
…i
ÃV i i
ÕÌ >L >}
i ÕÃ} ÊÕy
°
/RACLESPROZEDURALE0ROGRAMMIERSPRACHE
/RACLE
0,31,
0ROGRAMMIERUNG
3TEVEN&EUERSTEIN
MIT"ILL0RIBYL
$EUTSCHEÄBERSETZUNGVON$OROTHEA2EDER
Inhalt
Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XIII
I
Programmieren mit PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1
Einführung in PL/SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Was ist PL/SQL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Die Ursprünge von PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Das ist PL/SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
PL/SQL-Versionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Ressourcen für PL/SQL-Entwickler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Einige Ratschläge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2
PL/SQL-Code schreiben und ausführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
SQL*Plus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wichtige PL/SQL-Tasks ausführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PL/SQL-basierte Entwicklungswerkzeuge von Oracle. . . . . . . . . . . . . . . . . . . . . . .
PL/SQL von anderen Sprachen aus aufrufen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Und was gibt es sonst noch? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
32
47
55
58
63
Grundlagen der Sprache PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Die Blockstruktur von PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der Zeichensatz von PL/SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bezeichner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Literale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Semikolon als Trennzeichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Schlüsselwort PRAGMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
74
75
80
83
83
85
86
|
VII
II Die Struktur von PL/SQL-Programmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4
Bedingte und sequentielle Steuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
IF-Anweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
CASE-Anweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Die GOTO-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Die NULL-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5
Schleifen
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Grundlegendes über Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Die einfache Schleife . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Die WHILE-Schleife. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Die numerische FOR-Schleife . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Die Cursor-FOR-Schleife . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Schleifen-Label. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Tips zur Verwendung von PL/SQL-Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
6
Exception-Handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Wie PL/SQL mit Fehlern umgeht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Exceptions definieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Exceptions auslösen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Exceptions behandeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
III Die Programmdaten von PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
7
Die Arbeit mit Programmdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Programmdaten benennen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Überblick über PL/SQL-Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Programmdaten deklarieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Programmiererdefinierte Subtypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Konvertierung zwischen Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
8
Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Der Einfluß der Zeichensätze. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
String-Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
String-Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
String-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
NLS-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
VIII
| Inhalt
9
Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Numerische Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Zahlenkonvertierungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Numerische Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
10 Datumswerte und Zeitstempel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Datentypen für Datum und Uhrzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Datums- und Zeitstempel-Konvertierungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Datums-/Uhrzeit-Arithmetik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Datums-/Uhrzeit-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
11 Datensätze und Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
Datensätze in PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
Collections in PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Collection-Typen und Collections deklarieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Einsatzgebiete für Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Built-in-Methoden für die Arbeit mit Collections . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Die Arbeit mit Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Pseudofunktionen für Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Die Verwaltung von Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Einen Collection-Typ auswählen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
12 Weitere Datentypen
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
Der Datentyp BOOLEAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
Der Datentyp RAW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Die Datentypen UROWID und ROWID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Die LOB-Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Die Arbeit mit LOBs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
Vordefinierte Objekt-Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
IV SQL in PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
13 DML und Transaktionsverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
DML in PL/SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Gruppen-DML mit der FORALL-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
Transaktionsverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Autonome Transaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Inhalt
|
IX
14 Abruf von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
Cursor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
Implizite Cursor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
Explizite Cursor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
BULK COLLECT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
SELECT...FOR UPDATE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
Cursor-Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
Cursor-Ausdrücke (Oracle9i) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
15 Dynamisches SQL und dynamisches PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
NDS-Anweisungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
Mehrzeilen-Abfragen mit Cursor-Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
Variablen binden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
Umgang mit Objekten und Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
Anwendungen mit NDS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
Das Package NDS Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Vergleich zwischen NDS und DBMS_SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
V Anwendungen mit PL/SQL erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
16 Prozeduren, Funktionen und Parameter
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
Modularer Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
Funktionen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
Lokale Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
Das Überladen von Modulen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
Vorwärts-Deklarationen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
Fortgeschrittene Themen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
Gehet hin und modularisieret Euch! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
17 Packages
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
Wozu Packages?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
Regeln für den Aufbau von Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
Regeln für den Aufruf von Package-Elementen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
Der Umgang mit Package-Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
Wann nutzt man Packages? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
Packages und Objekt-Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
X
|
Inhalt
18 Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
DML-Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
DDL-Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
Datenbankereignis-Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
INSTEAD OF-Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
AFTER SUSPEND-Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
Wartung von Triggern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
19 Verwaltung von PL/SQL-Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
Code in der Datenbank verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
Gespeicherten Code schützen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
Native Kompilierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
PL/SQL-Programme testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
Fehlerbehebung in PL/SQL-Programmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
Tuning von PL/SQL-Programmen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785
Anwendungs-Performance verbessern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
VI PL/SQL für Fortgeschrittene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805
20 Die Laufzeitarchitektur von PL/SQL
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807
Hinter den Kulissen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808
Verwaltung der Abhängigkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818
Speichernutzung von PL/SQL im Oracle-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . 830
Verarbeitung von PL/SQL auf der Serverseite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
PL/SQL-Code auf dem Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850
Modelle für Ausführungsrechte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859
Hardware für PL/SQL: größer = besser? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 868
Was wirklich wichtig ist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870
21 Objektorientierte Aspekte von PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872
Einführung in die Objekt-Features von Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873
Ein erweitertes Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875
Objekt-Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916
Wartung von Objekt-Typen und -Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929
Weitergehende Überlegungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
Inhalt
|
XI
22 Java von PL/SQL aus aufrufen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935
Oracle und Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935
Java in Oracle nutzen: Vorbereitungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937
Eine einfache Demonstration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 941
Verwendung von loadjava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947
Verwendung von dropjava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 950
Java in der Datenbank verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 951
Verwendung von DBMS_ JAVA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953
Java in PL/SQL zugänglich machen und benutzen . . . . . . . . . . . . . . . . . . . . . . . . . 958
23 Externe Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973
Einführung in externe Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974
Die Oracle Net-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978
Erstellen einer Oracle-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981
Die Aufrufspezifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983
Eine Exception aus dem aufgerufenen C-Programm auslösen . . . . . . . . . . . . . . . . 994
Nicht-standardmäßige Agenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997
Die Pflege von externen Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 998
Index
XII
|
Inhalt
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003
KAPITEL 1
Einführung in PL/SQL
In diesem Kapitel werden PL/SQL, seine Ursprünge und seine diversen Versionen vorgestellt. Außerdem erfahren Sie, welche anderen Ressourcen für PL/SQL-Entwickler es
gibt, und erhalten einige Ratschläge.
Was ist PL/SQL?
PL/SQL steht für »Procedural Language extensions to SQL«, also etwa »prozedurale
Spracherweiterungen für SQL«. SQL ist sowohl für die Abfrage als auch die Änderung
relationaler Datenbanken überall verbreitet. Oracle hat PL/SQL eingeführt, um Funktionen hinzuzufügen, die in SQL fehlen, und um eine umfassendere Programmiersprache
für diejenigen Entwickler zu schaffen, die auf der Oracle-Datenbank unternehmenswichtige Anwendungen ausführen müssen.
PL/SQL hat folgende Wesensmerkmale:
Es ist eine hochstrukturierte, lesbare und zugängliche Sprache.
Das an Ada angelehnte PL/SQL hat ein ultramodernes Design. Wenn Sie Programmieranfänger sind, ist PL/SQL ein idealer Ausgangspunkt. Haben Sie jedoch bereits
Erfahrungen mit anderen Programmiersprachen gemacht, werden Sie rasch mit der
neuen Syntax zurechtkommen. Mit »Zugänglichkeit« ist gemeint, daß Ihr Code sich
leicht warten und pflegen läßt, ein Aspekt, der für eine hochwertige Software von
großer Bedeutung ist.
PL/SQL ist eine standardisierte und portierbare Sprache für die Oracle-Entwicklung.
Wenn Sie eine PL/SQL-Prozedur oder -Funktion schreiben, die innerhalb der Personal Oracle-Datenbank auf Ihrem Notebook ausgeführt werden soll, können Sie dieselbe Prozedur auf eine Datenbank in Ihrem Firmennetzwerk übertragen und dort
ohne weitere Änderung ausführen (vorausgesetzt, die Oracle-Versionen sind kompatibel). »Einmal schreiben, überall ausführen« war schon lange vor Java das Leitmotiv von PL/SQL. Allerdings bedeutet »überall« bei PL/SQL: »Überall dort, wo es
eine Oracle-Datenbank gibt«.
|
3
PL/SQL ist eine eingebettete Sprache.
PL/SQL ist nicht als »selbständige« Sprache, sondern für eine »Host«-Umgebung
konzipiert. Sie können also z.B. PL/SQL-Programme innerhalb der Datenbank (etwa
über das SQL*Plus-Interface) ausführen. Alternativ können Sie PL/SQL-Programme
aber auch innerhalb eines Oracle Developer-Formulars oder -Berichts ausführen
(hier spricht man von »PL/SQL auf der Clientseite«). Sie können aber keine
PL/SQL-»Executable« erstellen, die von selbst läuft. In Kapitel 2 erfahren Sie alles,
was Sie wissen müssen, um diese eingebettete Sprache nutzen zu können.
PL/SQL ist eine Datenbanksprache mit hoher Leistung und starker Integration.
Heutzutage haben Sie viele Wahlmöglichkeiten, wenn Sie Programme schreiben
möchten, die auf der Oracle-Datenbank laufen. Sie können Java und JDBC (oder
SQLJ) verwenden; Sie können Visual Basic und ODBC einsetzen, oder Sie können
Delphi, C++ oder andere benutzen. Sie werden jedoch feststellen, daß es mit
PL/SQL viel einfacher als mit jeder anderen Sprache ist, hocheffizienten Code für
die Arbeit mit Oracle-Datenbanken zu schreiben. Vor allem bietet Oracle bestimmte
PL/SQL-spezifische Verbesserungen wie beispielsweise die FORALL-Anweisung,
mit denen Sie die Datenbank-Performance um eine Größenordnung oder mehr steigern können.
Die Ursprünge von PL/SQL
Oracle kann auf eine lange Geschichte der Einführung von deklarativen, nicht-prozeduralen Ansätzen zum Entwurf sowohl von Datenbanken als auch von Anwendungen
zurückblicken. Die Oracle-Server-Technologie gehört zu den fortschrittlichsten, mächtigsten und stabilsten relationalen Datenbanken der Welt. Die Werkzeuge zur Anwendungsentwicklung wie Oracle Forms ermöglichen eine hohe Produktivität, die durch den
»Male-Dein-Formular«-Ansatz erreicht wird, bei dem ausführliche Default-Möglichkeiten dem Entwickler größere spezielle Programmierarbeiten ersparen.
Die Anfangszeit von PL/SQL
In den frühen Jahren stellte dieser deklarative Ansatz in Verbindung mit der bahnbrechenden relationalen Technologie die Entwickler schon zufrieden. Aber mit der Zeit wurden die Erwartungen und Anforderungen immer anspruchsvoller. Die Entwickler
mußten unter die Oberfläche der Produkte gelangen können. Sie mußten in ihre Formulare und Datenbankprozeduren komplizierte Formeln, Ausnahmen und Regeln einbauen
können.
1988 veröffentlichte Oracle die Oracle-Version 6.0, was ein großer Fortschritt in der
Technologie der relationalen Datenbanken war. Eine der Schlüsselkomponenten war die
sogenannte prozedurale Option, also PL/SQL. Ungefähr zur gleichen Zeit veröffentlichte
Oracle das lange erwartete Upgrade zu SQL*Forms 2.3. (Dieses Produkt ist nunmehr
4 |
Kapitel 1: Einführung in PL/SQL
unter dem Namen Oracle Forms oder Forms Developer bekannt.) SQL*Forms 3.0 enthielt als erstes Entwicklungswerkzeug die PL/SQL-Maschine, mit der die Entwickler ihre
prozedurale Logik in einer natürlichen und einfachen Art und Weise programmieren
konnten.
Die erste Version von PL/SQL war in ihren Möglichkeiten sehr eingeschränkt. Auf der
Server-Seite konnte man PL/SQL nur für die Programmierung von Skripten zur »Stapelverarbeitung« prozeduraler oder SQL-Anweisungen verwenden. Man konnte also keine
Prozeduren oder Funktionen zur späteren Ausführung ablegen. Außerdem konnte man
keine modulare Anwendung schreiben oder komplexe Geschäftsregeln im Server hinterlegen. Auf der Client-Seite konnte man mit SQL*Forms 3.0 Prozeduren und Funktionen
erzeugen, aber die Unterstützung von Funktionen war nicht dokumentiert und wurde
daher von vielen Programmierern jahrelang nicht benutzt. Außerdem fehlte in dieser Version von PL/SQL die Unterstützung von Arrays, und man konnte nicht zu Ein- und Ausgabezwecken mit dem Betriebssystem arbeiten. PL/SQL war zu diesem Zeitpunkt noch
weit von einer vollständigen Programmiersprache entfernt.
Trotz all dieser Einschränkungen wurde PL/SQL von der Entwicklergemeinde freudig, ja
sogar begeistert aufgenommen. Der Bedarf, eine einfache IF-Anweisung in SQL*Forms
programmieren zu können, war groß, der Bedarf nach Stapelverarbeitung mit mehreren
SQL-Anweisungen überwältigend.
Nur wenigen Entwicklern war zu diesem Zeitpunkt klar, daß die eigentliche Motivation
und die treibende Vision hinter PL/SQL der Wunsch war, Programmsteuerung in Produkten wie SQL*Forms anbieten zu können. Schon früh in der Produktgeschichte der
Oracle-Datenbank und der dazugehörigen Werkzeuge hatte die Firma Oracle zwei
Hauptschwächen ihrer Architektur erkannt: mangelnde Portierbarkeit und Probleme mit
der Ausführungsberechtigung.
Bessere Portierbarkeit der Anwendungen durch PL/SQL
Die Bedenken hinsichtlich der Portierbarkeit mögen denjenigen, die mit den Marketingund technischen Strategien der Oracle Corporation vertraut sind, merkwürdig vorkommen. Schließlich war eines der herausragenden Merkmale der Oracle-Lösung seit den
frühen achtziger Jahren ihre Portierbarkeit. Zu dem Zeitpunkt, als PL/SQL erschien, lief
das C-basierte RDBMS auf vielen verschiedenen Betriebssystemen und Hardware-Plattformen. SQL*Plus und SQL*Forms ließen sich leicht an eine Reihe von Terminalkonfigurationen anpassen. Und trotzdem gab es immer noch viele Anwendungen, die eine
bessere Kontrolle benötigten, wie sie Sprachen wie COBOL, C und FORTRAN bieten.
Aber sobald ein Entwickler sich außerhalb der plattformunabhängigen Oracle-Werkzeuge bewegte, war die resultierende Anwendung nicht mehr portierbar.
Die Sprache PL/SQL zielt darauf ab, daß immer mehr Anwendungsanforderungen vollständig in betriebssystemunabhängigen Entwicklungswerkzeugen implementiert werden
können. Mittlerweile haben auch Java und andere Programmiersprachen die Portierbar-
Die Ursprünge von PL/SQL
|
5
keit stark erhöht. Dennoch bleibt PL/SQL auf diesem Gebiet immer noch der Vorreiter
und ermöglicht den Entwicklern natürlich nach wie vor, äußerst portierbare Anwendungen zu schreiben.
Verbesserte Ausführungsberechtigungen und Transaktionsintegrität
Ein noch größeres Problem als das der Portierbarkeit war das der Ausführungsberechtigung. In RDBMS und der Sprache SQL können Sie Zugriff und Änderungen auf jeder
Datenbanktabelle sehr fein einstellen. Beispielsweise können Sie mit dem GRANT-Befehl
sicherstellen, daß nur bestimmte Rollen und Benutzer die Daten einer Tabelle mit einer
UPDATE-Operation ändern können. Auf der anderen Seite kann diese GRANT-Anweisung nicht sicherstellen, daß auch alle UPDATE-Anweisungen, die ein Benutzer oder
eine Anwendung ausführen möchte, korrekt ausgeführt werden. Mit anderen Worten:
Die Datenbank kann nicht die Integrität einer Transaktion garantieren, die sich über
mehr als eine Tabelle erstreckt, wie es bei den meisten Geschäftstransaktionen der Fall
ist.
Das Geheimnis hinter dieser Ebene der Transaktionsintegrität ist das Konzept der Ausführungsberechtigung (execution authority, auch run authority). Anstatt einer Rolle oder
einem Benutzer das Recht zuzugestehen, eine Tabelle ändern zu dürfen, gestehen Sie nur
das Recht zu, eine Prozedur auszuführen. Diese Prozedur kontrolliert nicht nur den
Zugriff auf die zugrundeliegenden Datenstrukturen, sondern stellt ihn auch bereit. Sie
gehört einem speziellen Oracle RDBMS-Benutzer, der wiederum über die eigentlichen
Änderungsberechtigungen für die betroffenen Tabellen verfügt. Die Prozedur wird damit
zu einem »Torwächter« für den Übertragungsvorgang. Ein Programm (unabhängig
davon, ob es nun eine Oracle Forms-Anwendung oder ein Pro*C-Programm ist) kann die
Übertragung ausschließlich über die Prozedur ausführen. Als Resultat wird die Transaktionsintegrität garantiert.
Bescheidene Anfänge, stetige Verbesserungen
Während Oracle daran arbeitete, aus Java eine Alternative zu PL/SQL für Datenbanken
zu machen, wurde gleichzeitig PL/SQL stetig und von Grund auf verbessert. Oracle fügte
eine Vielzahl von Built-in-Packages hinzu, die PL/SQL in die verschiedensten Richtungen
erweiterte. Außerdem bekam die Sprache objektorientierte Fähigkeiten, diverse Arrayähnliche Datenstrukturen und ganz allgemein mehr Umfang und Tiefe.
SQL mag vielleicht sehr mächtig sein, aber nicht mächtig und flexibel genug, um vollständige Anwendungen damit zu schreiben. Mit PL/SQL von Oracle ist sichergestellt,
daß Sie in der betriebssystemunabhängigen Oracle-Umgebung bleiben und dennoch
hocheffiziente Anwendungen entwickeln können, die den Anforderungen der Benutzer
gerecht werden.
6 |
Kapitel 1: Einführung in PL/SQL
PL/SQL hat seit seinen bescheidenen Anfängen einen langen Weg zurückgelegt. Bei der
Version 1.0 war es noch gang und gäbe, daß ein Entwickler zu seinem Vorgesetzten
sagte: »Das geht mit PL/SQL nicht.« Heute wäre eine solche Aussage nicht mehr die
Wahrheit, sondern eine faule Ausrede. Wenn Sie sich jemals dabei ertappen, daß Sie
angesichts einer Anforderung sagen: »Das geht ja überhaupt nicht«, sollten Sie dies nicht
gegenüber Ihrem Vorgesetzten wiederholen. Schauen Sie sich statt dessen die Möglichkeiten von PL/SQL einschließlich der Built-in-Packages genauer an. Heutzutage können
Sie mit PL/SQL so gut wie alles machen.
Im nächsten Abschnitt sehen Sie einige PL/SQL-Beispielprogramme, die Sie mit den
Grundlagen der Programmierung in dieser Sprache vertraut machen.
Das ist PL/SQL
Wenn das Programmieren oder die Arbeit mit PL/SQL (oder SQL) für Sie neu ist, hat die
Aussicht, sich auf PL/SQL einzulassen, womöglich etwas Einschüchterndes. Bitte kneifen
Sie jetzt nicht! Bestimmt wird es einfacher, als Sie denken. Dafür gibt es zwei Gründe:
• Programmiersprachen sind nicht schwer zu erlernen, zumindest im Vergleich zu
einer neuen natürlichen Sprache. Warum? Einfach deshalb, weil Computer nicht
sonderlich schlau sind. Sie »denken« – also rechnen – zwar sehr schnell, aber ganz
und gar nicht kreativ. Wenn wir einem Computer sagen möchten, was wir wollen,
dürfen wir dazu nur eine sehr strenge Syntax verwenden. Daher ist auch die resultierende Sprache sehr streng (keine Ausnahmen!) und läßt sich daher leichter erlernen.
• Verglichen mit anderen Programmiersprachen ist PL/SQL in der Tat sehr einfach. Es
stützt sich auf ein stark strukturiertes »Blockdesign« mit verschiedenen Abschnitten, die alle durch explizite, sich selbst dokumentierende Schlüsselwörter definiert
sind.
Die folgenden Beispiele demonstrieren einige wichtige Elemente der Struktur und Funktionalität von PL/SQL.
Integration mit SQL
Ein wichtiger Aspekt von PL/SQL ist seine SQL-Integration. Sie benötigen keine zwischengeschaltete Software als »Klebstoff«, wie z.B. ODBC (Open DataBase Connectivity)
oder JDBC (ist eigentlich gar kein Akronym, wird aber gern mit »Java DataBase Connectivity« wiedergegeben), um SQL-Anweisungen in PL/SQL-Programmen auszuführen.
Statt dessen setzen Sie das UPDATE oder SELECT einfach in Ihren Code:
1
2
3
4
5
DECLARE
l_book_count INTEGER;
BEGIN
SELECT COUNT(*)
Das ist PL/SQL
|
7
Index
- (Bindestrich)
- (Minuszeichen)-Suffix für negative Zahlen
249
-- einzeiliger Kommentar, Zeichen 75, 83
!= (ungleich)-Operator 74
" (Anführungszeichen, doppelte)
in Bezeichnern 76
in Programmdaten-Namen 164
in String-Literalen 82
# (Pfundzeichen)
in Bezeichnern 76
in Programmdaten-Namen 164
$ (Dollarzeichen)
in Bezeichnern 76
Präfix, Zahlenformatmodell 249
in Programmdaten-Namen 164
Zahlenformatelement für U.S.-Dollar 250
% (Prozentzeichen)
%ROWTYPE-Attribut für Datensatz-Verankerung 173
%TYPE-Attribut für Skalar-Verankerung 173
Attributzeichen 74
& (Kaufmanns-Und), in String-Konstanten 207
' (Anführungszeichen, einfache)
' ', String der Länge null angeben 81
in String-Konstanten 207
in String-Literalen 74, 81
( ) (runde Klammern)
in Java-Methoden 943
in Trigger-WHEN-Klauseln 703
** (Exponential)-Operator 74
, (Komma)
Gruppentrennzeichen in Zahlenformatmodell
249
Methodenabschluß 877
. (Punkt)
. (Punkt)-Notation
referenzieren von Package-Elementen 679
verwenden mit geschachtelten Datensätzen
356
Zugriff auf Datensatzfelder 354
Zugriff auf Objekt-Attribute oder Methoden 889, 891
.. (Bereichs)-Operator 75
Dezimalpunkt in Zahlenformatmodell 249
/ (Schrägstrich)
/* und */ (mehrzeiliger Kommentarblock, Begrenzungszeichen) 70, 75, 84
Beenden von PL/SQL-Anweisungen in
SQL*Plus 38
Verzeichnis-Begrenzungszeichen bei Unix
und Microsoft 39
: (Doppelpunkt)
: (Host-Variable)-Zeichen 74
:= (Zuweisungs)-Operator 75, 171
Wert von Datensatzfeldern ändern 354
NEW- und OLD-Namen 703
; (Semikolon)
Abschließen von Deklarationen und Anweisungen 74, 83
Abschließen von SQL-Anweisungen 37
Beenden von Prozeduraufrufen 612
Methodenabschluß-Fehler 877
Vermeiden von Syntaxfehlern in IF-Anweisungen 99
< > (spitze Klammern)
< > (ungleich)-Operator 74
<%= %>, PL/SQL in HTML-Seiten einbinden
63
<< und >> (Label-Begrenzungszeichen) 74
|
1003
<<label>> in Code 86-87
<= (kleiner als)-Operator 75
>= (größer als)-Operator 75
negative Werte in Zahlenformat 249
= (Gleichheitszeichen)
= (Zuweisungs)-Operator in Java 943
=> (Assoziations)-Operator 75
@ (at-Zeichen)
@- und @@-Befehl 38
Remote-Adreßzeichen 74
[] (Klammern), optionale Syntax in PL/SQLBlöcken 67
^= (ungleich)-Operator 74
_ (Unterstrich)
in Bezeichnern 76
in Programmdaten-Namen 164
Single-Byte-Wildcard 74
{ } (geschweifte Klammern), in Java-Codeblökken 943
|| (Verkettungs)-Operator 74, 212
~= (ungleich)-Operator 74
A
Abfragen 8
Mehrzeilenmit NDS 577-584
Vorgehensweise 577
von XML-Daten 458
(siehe auch SQL)
Abfragen- und Berichts-Packages (Beispiel) 788
Abhängigkeiten 818-830
in clientseitigem PL/SQL 826-827
zwischen gespeicherten Objekten 759
Remote- 828-830
in serverseitigem PL/SQL 819-826
ungültige Programme, Gültigkeit
wiederherstellen 823-826
USER_DEPENDENCIES-View 760
ABORT-Prozedur (DBMS_RESUMABLE-Package) 751-752
Abrufen von Objekten 909
Abschluß von Schleifen 115
Cursor-For-Schleifen 126, 130
einfache Schleifen, EXIT und EXIT WHENAnweisungen 118
numerische For-Schleifen 122
1004 |
Index
Richtlinien für 130
WHILE-Schleifen 121
Abschneide-Funktionen 264
Abschneiden
von Views oder Tabellen, Prozedur für 586
Zeichen links in Strings 223
ABS-Funktion 264
abstrakte Datentypen 165, 873
(siehe auch Subtypen)
abstrakte Klassen, Java 876
ACOS-Funktion 265
Ada-Programmiersprache XIII
ADD_MONTHS-Funktion 330
Monatsende, Probleme mit 332
Advanced Queuing (AQ) 16, 174
AFTER-Trigger 699
AFTER INSERT-Trigger 700
AFTER LOGON-Trigger 735
ungültiger, Auswirkungen 740
AFTER SERVERERROR-Trigger 735-740
ungültiger, Auswirkungen 740
AFTER STARTUP-Trigger 734
ungültiger, Auswirkungen 740
AFTER SUSPEND-Trigger 746-754
Beispiel 748-750
DBMS_RESUMABLE-Package, ABORTProzedur 751-752
erstellen 750
mehrfache Auslösung in einer Anweisung
752
Datenbankereignis 733
DDL-Ereignisse für 726
Skript für 700
Agenten, externe Prozedur 997
AGENT-Klausel 982
Aggregatfunktionen, aufrufen in SQL 646
Aggregatoperationen mit Datensätzen 344
Aggregatzuweisung von Collection-Inhalten an
eine andere Collection 387
Aktivieren von Triggern 754
Aktualisierung von Objekt-Views mit INSTEAD
OF-Trigger 925-927
Aktualparameter 623
dem Formalparameter zuordnen 624
NOCOPY-Hinweis für Parameter und 631
AL16UTF16 (Oracle-Abkürzung für Unicode
UTF-16) 191, 221
Algorithmen in PL/SQL-Programmen, Tuning
786
Aliasnamen
für Cursor-Variablen 563
Spalten-, in expliziten Cursorn 534
von vordefinierten Datentypen 178
COLUMN_VALUE 411
ALL_-Views 760
Allround Automation, PL/SQL Developer 780
ALTER SESSION-Anweisung
Ändern von NLS_LENGTH_SEMANTICS
193
Angeben eines Standarddatumsformats für
die Sitzung 284
Überschreiben von NLS-Parameterwerten 253
ALTER SYSTEM-Anweisung, Ändern von
NLS_LENGTH_SEMANTICS 193
ALTER TABLE-Anweisungen, Ermitteln, welche
Spalte damit geändert wurde 729
ALTER TRIGGER-Anweisung 754
ALTER TYPE-Anweisung 892
altind.pkg-Datei 408
Amerikanisches Englisch, Darstellung mit 7-BitASCII 188
Änderungen verfolgen mit DML-Trigger 707-713
Anführungszeichen (siehe ' und ", unter Symbole)
anonyme Blöcke 8, 66-69
Aufschieben der Datenstruktur-Initialisierung
797
ausführen in PL/SQL-Aufrufen aus SQL
810-813
Aufrufen von gespeichertem Programm
812
Block mit Aufruf eines nativ kompilierten
Programms 814
Beispiele 67
definiert als autonome Transaktionen 495
in gemeinsam genutztem Code 835-839
Bind-Variablen in 837
kompilieren in serverseitiges PL/SQL 847
Label für 86
Struktur 67
Toplevel-Prozeduren und Packages im Gegensatz zu 807
in verschiedenen Umgebungen 68
anonyme Exceptions 137
programmiererdefinierte, Geltungsbereich
145
System
Geltungsbereich 145
Namen 141
anonyme Spalten in Collections 397
ANSI
IBM-kompatible numerische Subtypen 247
SQL-Standard, leere und NULL-Strings 203
Anweisungen 8
; (Semikolon), abschließen mit 74, 83
bearbeiten in SQL*Plus 43
CASE 100-105
DML 12
Datensätze in 478-481
DELETE 473
FORALL, Gruppen-DML mit 481-490
Informationen zurückliefern 475
INSERT 471
UPDATE 472
(siehe auch DML)
EXECUTE IMMEDIATE 14, 15
EXIT 9
EXIT und EXIT WHEN, Abschließen von einfachen Schleifen 118
FETCH (siehe FETCH-Anweisungen)
FORALL 16
gemeinsam nutzen für geringere Speicherbelegung 835-839
IF 9, 91-99
geschachtelte 97-99
IF-THEN-ELSE-Kombination 93
IF-THEN-ELSIF-Kombination 94
IF-THEN-Kombination 92
in SQL*Plus 43
NDS 572-576
EXECUTE IMMEDIATE 572-575
OPEN FOR 575
NULL 112-114
OPEN FOR 15
SELECT (siehe SELECT-Anweisungen)
SELECT INTO
Initialisieren von Collection-Variablen 385
SQL
ausführen in SQL*Plus 36
CASE 107
CREATE 47
gemeinsam nutzen für geringere
Speicherbelegung 835-839
als Schleifen 132
Index
|
1005
Steuerungs- 91-114
GOTO 108-111
suspendierte
AFTER SUSPEND-Trigger 746-754
als Datenbank-Trigger 698
Transaktionsverwaltung 490-495
anweisungsbezogene Trigger 699
Skript für 700
Anwendungen
autonome Transaktionen in 13
clientseitiges PL/SQL in 55
erstellen mit NDS 593-601
dynamisches PL/SQL, verwenden 596-601
Fehlerbehandlung 594-596
Programme mit Aufrufer-Rechten
gemeinsam nutzen 593
Exception-Handling, einzelnes Package für 28
Exceptions, Namen zuweisen in 141
Fehler, auslösen 148
Fehlerbehandlungsarchitektur, einrichten 136
Performance verbessern
Zuhören können 798-800
Zwischenspeichern von Daten auf PackageEbene 800-802
Portierbarkeit von 5
schreiben, beste Standards und Programmierverfahren 786
Verbessern der Performance von 793-803
BULK COLLECT und FORALL,
verwenden 802
Vermeiden unnötiger Code-Ausführung
793-798
wiederverwendbare Komponenten, autonome
Transaktionen als 497
ANY-Datentypen 169, 461-465, 903-908
ANYDATA 462, 903
Wert verarbeiten 904-907
ANYDATASET 462, 904
ANYTYPE 462, 903
DBMS_TYPES-Package 904
Erstellen eines transienten Typs 907
ANY-Schlüsselwort 659, 980
anzeigen
gespeicherte Objekte, Informationen über 760
Hilfebildschirm für loadjava 949
Quellcode
in SQL*Plus 48
USER_SOURCE-View 762
1006 |
Index
Spalten mit showcol 577
Application Programming Interfaces (APIs) 17
AQ (Advanced Queuing) 174
Arbeitsbereiche für ein serialisiertes Package 689
Arbeitsspeicher (PGA)-Collections, erstellen 390
Arithmetik, Datum/Uhrzeit 312-324
numerische Werte addieren und subtrahieren
313
Zeiträume 316-324
addieren und subtrahieren 321
DATE mit CAST in TIMESTAMP
konvertieren 320
Differenz zwischen Datumswerten
berechnen 315
multiplizieren und dividieren 322
ARRAY-Klasse 971
Arrays
assoziative 360
VARRAYs 361
(siehe auch assoziative Arrays; VARRAYs)
AS LANGUAGE-Klausel für Aufrufspezifikationen 984
ASCII
7-Bit-Zeichensatz 188
Strings in ASCII-Zeichen konvertieren 208
ASCII-Funktion 208, 209
ASCIISTR-Funktion 208, 209
asiatische Sprachen, Zeichensätze für 189
ASIN-Funktion 265
AS-Schlüsselwort 9
assoziative Arrays 360, 406-407, 418
deklarieren 364
Tabellentyp definieren 364
NOCOPY-Parameter und 631
sequentielle und nicht-sequentielle 398-402
TRIM-Prozedur und 381
übergeben als Funktionsparameter 402
Wertzuweisung an Elemente 387
ATAN2-Funktion 266
ATAN-Funktion 265
atleastone.sql-Skript 800
atomar null (uninitialisierte Variablen) 883
atomare Bestandteile von PL/SQL 75
Atomizität von Transaktionen 469
Attribute
%-Zeichen 74
BEFORE und AFTER, kombinieren mit Datenbankereignis-Trigger 733
Cursor- (siehe Cursor-Attribute)
DDL-Trigger
Beispiele 728-732
Funktionen für 726-728
Objekt
Collections als 372
Objekte vergleichen mit 912
Aufheben von Datensatzsperren 550
Auflösen von Bezeichnern in PL/SQL-Kompilierung 812
aufrufen
Funktionen 618
in SQL 645-651
Java aus PL/SQL 935-972
Methoden 880
Package-Elemente 678
Prozeduren 612
Aufrufer-Rechte 14, 593, 807, 864-867
kombinieren mit Definierer-Rechten 867
Objekt-Typen, verwenden mit 877
Regeln und Restriktionen 866
Syntax 865
Aufrufspezifikationen 958, 974
Regeln 960
schreiben 983-985
Parameterzuordnung 985-989
Aurora JVM 935
Ausdrücke
Boolesche
in durchsuchten CASE-Anweisungen 102
WHILE-Schleife beenden 121
CASE 100, 105
Cursor- 510, 567-570
Restriktionen 570
in numerischer For-Schleife, Bereichsschema
123
Rückgabe aus Funktion mit RETURN-Anweisung 620
Skalarwerte in 101
Wertausdrücke für Zeiträume 307-309
ausführbare Anweisungen
nach dem Label in GOTO-Anweisung 108,
109
in numerischen For-Schleifen 122
RETURN-Anweisung für Funktionen 621
ausführbarer Code 8
Ausführung von Code
anonymer Block mit SQL 811
Funktionen in Parallelabfrage-Kontext
658-660
gespeicherte Programme 50
Programm, das eine gespeicherte Prozedur
aufruft 813
serverseitiges PL/SQL 849
SQL*Plus, Stile von 32
SQL-Anweisung oder PL/SQL-Block, Speicherzuweisung für 831
unnötige vermeiden 793-798
aufschieben bis es nötig ist 797
Schleifen prüfen 794-797
verfolgen 789-793
Ausführungsabschnitt 65
in anonymem Block 68
in Package-Rumpf 673
Ausführungsprofil, analysieren für Anwendungen 786
Ausführungsrecht 6, 859-867
Aufrufer-Rechte 14, 864-867
Regeln und Restriktionen 866
Syntax 865
Collections und 417
Definierer-Rechte 860-864
Vorteile 861, 861-864
Rechtemodelle, kombinieren 867
Ausgabe
aktivieren aus Java mit SET_OUTPUT-Prozedur 955, 964
DBMS_OUTPUT-Package 8
Anweisung für Objekt-Typ 465
CASE-Ausdruck, verwenden mit 105
Formatieren von Groß- und Kleinschreibung
mit INITCAP-Funktion 215
Java im Gegensatz zu PL/SQL 945
SERVEROUTPUT, einschalten in SQL*Plus
37
SQL*Plus
speichern in Datei 42
umleiten in Datei 976
äußere Tabellen 363
Ausweiten oder Upcasten zum generischen Element 879
AUTHID-Klauseln
AUTHID CURRENT_USER 865
Index
|
1007
dynamische SQL-Programme, verwenden
in 593
AUTHID DEFINER 865
in Package-Spezifikation 671
Package-Rumpf und 673
automatische Rekompilierung von ungültigen
Programmen 824
autonome Transaktionen 12, 470, 495-508
Beispiele 502-508
in Datenbank-Trigger 505-508
Logging-Mechanismus 502-505
Datenbank-Trigger als 716, 723
definieren 496
Regeln und Restriktionen 498-502
SERVERERROR-Trigger als 737
wann verwenden 497
AUTONOMOUS_TRANSACTION-Pragma 85
autontrigger.sql-Skript 506
autontrigger2.sql-Skript 507
B
B (Blanks) Präfix in Zahlenformat 249
Basistyp oder Supertype 876
bedingte Invalidierung von PL/SQL-Programmen 825
bedingte Kontrollanweisungen
CASE 100-105
bedingte Steuerungsanweisungen 91-107
IF-THEN 92
IF-THEN-ELSE-Kombination 93
IF-THEN-ELSIF-Kombination 94
Bedingungslogik 8
Befehle
Betriebssystem-, ausführen aus PL/SQL 972
Oracle, für Java 936
SQL
DDL-Trigger für 726
SQL*Plus 38
DESC 760
SET DEFINE OFF, Variablenersetzung
deaktivieren 207
SHOW ERRORS 49, 760
(siehe auch einzelne Befehlsnamen)
BEFORE-Trigger 699
BEFORE INSERT-Trigger 702, 713
BEFORE LOGOFF-Trigger 735
ungültiger, Auswirkungen 740
1008 |
Index
BEFORE SHUTDOWN-Trigger 734
ungültiger, Auswirkungen 740
Datenbankereignis 733
DDL-Ereignisse für 726
Skript für 700
BEGIN- und END-Anweisungen in anonymen
Blöcken 67
BEGIN-Anweisungen in GOTO-Anweisungen
110
BEGIN-END-Blöcke, dynamisches PL/SQL in
597
BEGIN-Schlüsselwort 8
begrenzte Collections 361
Behandlung von Exceptions 137, 150-160
Exception-Handler-Syntax 150
mehrere Exceptions in einem Handler 151
SQLCODE und SQLERRM in Handler-Klauseln 152
unbehandelte Exceptions 151
Weiterverarbeitung nach Exceptions 153
benannte Blöcke 69
benannte Exceptions 137
deklarieren 138
programmiererdefinierte, Geltungsbereich
145
System- 142
Geltungsbereich 145
verbinden mit Fehlercodes 139-142
Benutzer- oder Schema-Ereignisse, Trigger dafür
definieren 17
benutzerdefinierte Datentypen 165, 170
ANYTYPE, verwenden zur Definition 463
selbständige, in clientseitigem PL/SQL 852
benutzerdefinierte Funktionen
Restriktionen in SQL 646
benutzerdefinierte Konstruktormethoden
879-881
benutzerdefinierte Umgebung, in SQL*Plus laden
44
Benutzereinstellungen, für SQL*Plus 40
Benutzeroberfläche für Programmierer in Oracle
Forms 56
Benutzer-Rechte (siehe Aufrufer-Rechte)
Benutzersitzungen (siehe Sitzungen)
Berechnungen mit Zeiträumen 19
Berechtigungen
Aufrufer-Rechte und 866
für andere Benutzer und Rollen, betrachten 52
für Collections 417
Definierer- im Gegensatz zu Aufrufer-, Entscheidung für Programme 807
erteilen für PL/SQL-Wrapper-Programme
und Java-Klassen 936
Java-Entwicklung und Ausführung 938
Liste und Anzahl der erteilten Berechtigungen
731
Nutznießer auflisten 731
Objekt-, auf Objekt-Typen 931
Systemfür Objekt-Typen 930
RESUMABLE 747
Bereichsgrenze von numerischen For-Schleifen
dekrementieren 123
Bereichsoperator (..) 75
Bereichsschema in numerischen For-Schleifen
122
Auswerten von Ausdrücken in 123
Berichts-Packages (Beispiel) 788
Besitzer (Definierer-Rechte) 807
Betriebssystembefehl aus PL/SQL aufrufen
974-976
Betriebssystem-Beschränkungen für UhrzeitGenauigkeit 328
Betriebssysteme
Befehle aus PL/SQL ausführen 974-976
Dateien, Binärdaten, gespeichert in (BFILEs)
429
Systembefehle, ausführen aus PL/SQL 972
Bezeichner 75-77
in Block-Label 86
Exception-, Fehlernummern 85
extprocKey 979
extprocSID 979
Namensauflösung für 812
Objektbezeichner (OIDs)
Primärschlüssel- 886
systemeigene 886
qualifizierte 72
reservierte Wörter für 77
sichtbare 72
aus STANDARD-Package 78
Vorrang in Cursorn 518
Whitespace und Schlüsselwörter in 80
BFILE-Datentyp 168, 429, 430
BFILENAME-Funktion 443
Bibliotheken
clientseitiges PL/SQL 855-859
zur Entwurfszeit 856
zur Laufzeit 858
debug_extproc_library 999
externe Programme 974
Java-Klassen 935
löschen 1000
Oracle-Bibliothek für externe Prozeduren, erstellen 981
Shared DLL 976
Bidirektionaler Cursor, emulieren 391
Binärdaten 168
BFILE-Datentyp 429
BLOB-Datentyp 429
(siehe auch BLOB-Datentyp)
RAW-Datentyp 423
Binärwert (Typ ROWID), konvertieren in String
vom Typ VARCHAR2 187
BINARY_INTEGER-Datentyp 246
Konvertieren in andere numerische Typen 262
NATURAL- und POSITIVE-Subtypen 248
BIND-Anweisungen 513
Cursor-Ausdrücke und 570
Bind-Parameter
geliefert in USING-Klausel 577
SQL-String, liefern für 573
Bind-Variablen 40, 584-590
Beschränkungen 585
doppelte Platzhalter 588
Parameter-Modi 587
Speicherbelegung reduzieren mit 837
übergeben von NULL-Werten als Bindungsparameter 589
Verkettung im Gegensatz zu 584
BITAND-Funktion 266
BLOB (Binary Large Objekt)-Datentyp 168, 429,
430
Konvertieren in/aus LONG, LONG RAW
oder RAW 456
Blöcke 8, 64
anonyme 66-69
Beispiele 67
Struktur 67
in verschiedenen Umgebungen 68
(siehe auch anonyme Blöcke)
als autonome Transaktionen 13, 496
Index
|
1009
benannte 69
Cursor-Aktionen für explizite Cursor 528
Geltungsbereich in 70
geschachtelte 69
Java-Code 943
Label für 86-87
Sichtbarkeit von Variablen 71
Ziel-Label für GOTO-Anweisungen 108
Booch-Diagramm mit öffentlichen und privaten
Package-Elementen 669
BOOLEAN-Datentyp 168, 421-423
Definition von 165
Java und PL/SQL 942
Java, Konvertieren in PL/SQL 967-969
Boolean-Variablen
Ausgabe von Werten mit DBMS_OUTPUT
und CASE-Ausdruck 105
Boolesche Ausdrücke
in durchsuchten CASE-Anweisungen 102
WHILE-Schleife beenden 121
Boolesche Literale 80, 82
Boolesche Variablen
als Flags 95
Bruchzahlen
in Datumsarithmetik 313
in Intervallberechnung 318
Sekunden in Zeitstempel-Literalen 294
Sekundenbruchteils-Genauigkeit
(frac_sec_prec) 280
Built-in-Bezeichner 77
Built-in-Exceptions 78
BULK COLLECT-Klausel 16, 480, 542-548
%ROWCOUNT, explizites Cursor-Attribut,
Rückgabewerte 538
Abruf mehrerer Spalten 545
Beispiele 544
BULK COLLECT INTO-Klausel 520
LIMIT-Klausel für 544
RETURNING-Klausel, verwenden mit
546-548
verbessern der PL/SQL-Anwendungsperformance 802
%BULK_EXCEPTIONS, Cursor-Attribut 514,
516
%BULK_ROWCOUNT, Cursor-Attribut 487,
514
BULK-Schlüsselwort 308
1010 |
Index
Bytecode
ausführbare Form des kompilierten PL/SQL
808
Größe von 816
Bytes
INSTRB-Funktion, Byte-Position von Teilstring angeben 215
Länge von Strings mit variabler Länge
(VARCHAR2) 198
LENGTHB-Funktion, zählen mit 222
Single-Byte-Zeichen, Konvertieren in Multibyte 208
in einem String
(siehe LENGTH-Funktionen, LENGTHB)
Zeichen im Gegensatz zu
in Oracle9i-String-Deklarationen 192-195
C
C (Sprache)
aufrufen aus PL/SQL 59
Aufrufspezifikation für 984
Auslösen von Exception aus aufgerufenem
Programm 994-996
extprocsh()-Funktion 974
Parameterzuordnung für 985-989
Quellcode, generieren und kompilieren 768
REFs, Unterstützung für 901
C (Währungs)-Symbol, angeben der Position in
Zahlenformatmodell 249
Call Global Area (CGA) 831
serverseitige Datenstrukturen im Zusammenhang mit Cursorn 833
CALL-Anweisung 51, 810
Cartridges (selbständige Arbeitseinheiten) 497
CASE_NOT_FOUND-Exception 103
CASE-Anweisungen 8, 100-105
durchsuchte 100, 102
einfache 100
geschachtelte 104
WHEN-Klauseln, Fehler wegen 103
CASE-Ausdrücke 100, 105
abschließen von 105
SQL-Anweisungen und 107
CAST/MULTISET-Prozedur 17
Konvertieren von REFs in eine Collection 898
CAST-Funktion 184-186, 260
DATE in TIMESTAMP konvertieren 320
Konvertieren von aktuellem Datum und Uhrzeit 327
Konvertieren von Datum/Uhrzeit in und aus
Strings 310-312
CAST-Pseudofunktion 410, 414
MULTISET, verwenden in 414
CEIL-Funktion 264, 267
CGA (Call Global Area) 831, 833
CHAR-Datentyp 198, 199-201
Datenbank-Zeichensatz für 190
Deklarationen finden, die CHAR verwenden
763
mischen mit VARCHAR2-Werten 204-207
Zeichenfunktionen und 207
CHARSETFORM-Eigenschaft 993
CHARSETID-Eigenschaft 993
CHARTOROWID-Funktion 183
CHR-Funktion 208, 210
CLASSPATH-Umgebungsvariable 937
CLEAR_PLSQL_TRACE-Programm 790
clientseitiges PL/SQL 4, 850-859
Abhängigkeiten 826-827
Remote-Abhängigkeiten 828-830
Beschränkungen des Oracle Remote-Aufrufmodells 854
Bibliotheken 855-859
zur Entwurfszeit 856
zur Laufzeit 858
Cursor-Variablen 553
serverseitiges PL/SQL aufrufen aus 56
Speichern von Programmen in Bibliotheken
oder Oracle Forms-Programm 807
STANDARD-Package, für Abhängigkeitsverfolgung 822
unterstützte Versionen und Features 852-854
verlagern in Server 56
Zeichensätze für 191
(siehe auch serverseitiges PL/SQL)
CLOB (Character Large Object) 166, 429, 430
Konvertieren in NCLOB 456
lange Strings, speichern in Spalten 199
SQL-Semantik für, Performance-Auswirkung
455
UPPER-Funktion, anwenden auf 453
VARCHAR2s, austauschbar verwenden
451-454
CLOSE-Anweisungen 513
Cursor-Variablen und 555
für explizite Cursor 535
CLUSTER...BY-Klausel 659
Clustern mehrerer Computer 870
Cluster-Schlüssel 659
Code gemeinsam nutzen für geringere Speicherbelegung 835-839
Code in Packages 817
Speicherbelegung reduzieren 839
Code korrekturlesen lassen 29
Collections 358-418
assoziative Arrays 360, 406-407
sequentielle und nicht-sequentielle
398-402
CAST-Funktion, konvertieren mit 185
von Collections 389
von Datensätzen 348
Gruppenabruf mehrerer Spalten in 545
definieren 343
Definition und Beschreibung 361
deklarieren 364-373
als Funktionsrückgabetyp 369
assoziative Arrays 364
Collection-Variablen 367
als Datensatz-Bestandteile 368
geschachtelte Tabellen oder VARRAYs
366-368
als Modulparameter 369
als Spaltendatentypen 371
Typ definieren 364
einfache, Beispiel 359
geschachtelte Tabellen 360
große, Speicherbelegung reduzieren 839-842
Indizes für, alternative erstellen 408
indiziert mit Integern 362
indiziert mit Strings 362
Initialisieren von Variablen 382-387
konvertieren in virtuelle Tabellen 898
Konvertieren von REFS in 898
Methoden 373-382
COUNT 374
DELETE 375
EXISTS 376
EXTEND 377
FIRST und LAST 378
LIMIT 379
Index
|
1011
PRIOR und NEXT 380
TRIM 381
als Modulparameter 369
NDS, verwenden in 590-592
null 921
Objekt-Typen und 934
pflegen 417
Berechtigungen 417
Data Dictionary-Einträge 418
Pseudo-Funktionen für 409-417
Collection-Inhalt sortieren 416
referenziert in BULK COLLECT-Klausel 543
Übergeben von assoziativen Arrays als Funktionsparameter 402
undefinierte Zeilen referenzieren 388
VARRAYS 361
Verbesserungen in Oracle9i 21
Vergleich von Oracle-Typen 364, 915
Views, Aussagekraft verbessern 917
Wertzuweisung zu Elementen 387
zusammengesetzte 389-398
Collections von Datensätzen 389
Collections von Objekten 393
geschachtelte 394-398
Zwischenspeichern mehrerer Datenzeilen 802
Collection-Variablen 367
Collects (siehe BULK COLLECT-Klausel)
COLUMN_VALUE-Alias 411
COMMENT-Schlüsselwort 491
COMMIT-Anweisung 491, 492
Aufheben von Sperren mit 550
Commits in Datenbank-Trigger als autonome
Transaktionen 497
COMPILE_SCHEMA-Prozedur
(DBMS_UTILITY-Package) 769
Compiler
javac, CLASSPATH setzen 937
JServer Accelerator 935
PL/SQL 808
Compiler-Anweisungen 85
Compiler-Optionen, abrufen und setzen 954
Complex Object Retrieval (COR) 901
COMPOSE-Funktion 197, 208, 211
Computer Associates, SQL Station 780
CONCAT-Funktion 208, 212
CONNECT BY START WITH-Recompiler 824
CONNECT-Befehl (SQL*Plus) 34
1012 |
Index
CONSTANT-Schlüsselwort 171
CONSTRUCTOR-Funktion, Schlüsselwörter
881
Container 163
CONVERT-Funktion 186
Coordinated Universal Time (UTC) 275, 277
COS-Funktion 267
COSH-Funktion 267
COUNT-Funktion 373, 374
CREATE JAVA-Anweisung 936, 947
CREATE LIBRARY-Anweisung 981-983
CREATE OR REPLACE JAVA-Anweisungen 971
CREATE OR REPLACE TYPE BODY-Anweisung 894
CREATE TYPE BODY-Anweisung 877
CREATE TYPE-Anweisungen 364, 877
CREATE TYPE ... AS OBJECT 372
CREATE-Anweisungen 47
CREATEXML-Methode (XMLType-Objekt) 20
CURRENT_DATE-Funktion 327
CURRENT_TIMESTAMP-Funktion 327
Cursor 509-542
Arbeitsspeicher und
Sitzungs-Cursor schließen 834
Attribute für DML-Operationen 473
bidirektionaler oder wahlfreier Zugriff, emulieren 358
entsprechend Datensätzen 345
explizite 527-542
Attribute 537
Datenabruf aus 533-534
öffnen 532
Parameter 539-542
schließen 535
Spalten-Aliasnamen in 534
FOR UPDATE-Klausel 549
gemeinsam nutzen 838
Grundlagen von 510-520
Cursor-Attribute (siehe Cursor-Attribut)
Referenzieren von PL/SQL-Variablen
517-519
Terminologie des Datenabrufs 511
Wählen zwischen expliziten und impliziten
519-520
im Arbeitsspeicher halten 846
implizite 520-527
Attribute 524-526
Beispiele 521
Fehlerbehandlung 522-524
Inhalt in andere Cursor-Variable zuweisen
555
INVALID_CURSOR-Exception 143
öffnen 513
Package- 681-686
alternative 686
Beispiele 684
deklarieren 682
öffnen und schließen, Regeln 685
Package-, Zustand pflegen 842
REF CURSOR-Datentyp 168
(siehe auch REF CURSOR-Datentyp)
auf Remote-Server 854
Speicher und 833
Verankerung in 175
WHERE CURRENT OF CURSOR-Klausel
427
wiederverwenden 796
CURSOR_ALREADY_OPEN-Exception 143
Cursor-Attribut 512, 513-517
%BULK_EXCEPTIONS 516
%FOUND 515
%ISOPEN 516, 532
prüfen, bevor Cursor geschlossen wird 537
%NOTFOUND 515, 534
%ROWCOUNT 516
Cursor-Variablen, verwenden mit 555
explizite Cursor 537
für FORALL-Anweisung 486
für implizite SQL-Cursor 524-526
referenzieren für Cursor-Variablen 555
Cursor-Ausdrücke 510, 567-570
Restriktionen 570
Cursor-For-Schleifen 122, 125-127
Beispiele 126
Informationen über Ausführung, abrufen 131
Öffnen expliziter Cursor 533
Probleme beim Beenden 130
Rowids, verwenden in 428
CURSOR-Operator 567
Cursor-Variablen 509, 512, 553-567
Ähnlichkeiten zu statischen Cursorn 555
deklarieren 557
deklarieren von REF CURSOR-Typen 556
explizite und implizite Cursor im Gegensatz
zu 553
FETCH-Anweisungen 559
ROWTYPE_MISMATCH-Exception
559-561
Gründe für Benutzung 555
Mehrzeilen-Abfragen mit NDS 577-584
generische GROUP BY-Prozedur 581
generisches GROUP BY-Package 583
USING-Klausel in OPEN FOR 580
Native Dynamic SQL, Verwendung in 576
öffnen 557
OPEN FOR-Anweisung und 15
Package-Spezifikationen und 671
referenzieren in zwei Programmen 554
Regeln für 561-65
Aliasnamen 563
Geltungsbereich für Cursor-Objekte 564
Zeilentyp-Abgleich zur Laufzeit 562
Zeilentyp-Vergleich zur Kompilierungszeit
562
Restriktionen 567
übergeben als Parameter 565
Parametermodus 566
REF CURSOR-Typ, identifizieren 565
D
D (Dezimalpunkt), Angeben der Position im Zahlenformat 249
Data Definition Language (siehe DDL)
Data Dictionary
externe Prozedur-Einträge 1000
Informationen über Programme 759
Verwaltung von Collections 418
Views, Typen oder Ebenen 759
(siehe auch Views)
Data Manipulation Language (siehe DML)
DataBase Interface (DBI)-Modul 61
DATE-Datentyp
numerische Werte addieren oder subtrahieren
314
Zeitraum zwischen zwei Werten berechnen
318
Datei-E/A
Fähigkeiten erweitern 966-971
UTL_FILE-Built-in-Package 357
Index
|
1013
Dateien
clientseitiges PL/SQL 856
JFile-Klasse 966-971
Verzeichnisinhalt abrufen 969
löschen
JDelete-Klasse 942-945
aus PL/SQL 946
Umleiten von Ausgabe in 976
datemgr.pkg-Datei 121
Datenabruf 509-570
BULK COLLECT, verwenden 542-548
Abruf mehrerer Spalten 545
begrenzte Anzahl Zeilen abrufen 544
Cursor, definieren und verwenden 509-542
Cursor-Grundlagen 510-520
explizite Cursor 527-542
implizite Cursor 520-527
Cursor-Ausdrücke 567-570
Restriktionen 570
Cursor-Variablen 553-567
Ähnlichkeiten zu statischen Cursorn 555
deklarieren 557
deklarieren von REF CURSOR-Typen 556
FETCH-Anweisungen 559
Gründe zur Benutzung 555
öffnen 557
Regeln 561-565
Restriktionen 567
übergeben als Parameter 565
SELECT FOR UPDATE 548-553
Aufheben von Sperren mit COMMIT 550
WHERE CURRENT OF-Klausel 551-553
Datenabrufe, implizite Cursor und 521
Datenabstraktion mit Datensätzen 344
Datenbanken, Synchronisierung mit Spalten 176
Datenbankereignis-Trigger 698, 732-740
erstellen 733
LOGOFF 735
LOGON 735
SERVERERROR 735-740
SHUTDOWN 734
STARTUP 734
ungültige, Auswirkungen von 740
Datenbank-Rollen, Berechtigungen 861
Datenbank-Spalten (siehe Spalten)
Datenbank-Trigger 609
anonyme Blöcke in 68
1014 |
Index
autonome Transaktionen in 505-508
definiert als autonome Transaktionen 495
Commits und Rollbacks in 497
Oracle8i, neue Fähigkeiten in 16
(siehe auch Trigger)
Datenbank-Zeichensatz 190
CHR-Funktion und 211
Konvertieren von Landessprachen-Zeichensatz-Daten in 208, 232
String-Datentypen und 198
String-Konstanten 207
Datensatz-DML 18
Datensätze 343-358
Aktual- und Formalparameter als 632
Collections als Bestandteile 368
Collections von 389
Gruppenabruf mehrerer Spalten in 545
Cursorn entsprechende 345
Datenabruf aus expliziten Cursorn 533
Datenabruf in, mit NDS 579
Datensatzoperationen 350-354
NEW- und OLD-Strukturen und 705
NEW-Pseudo-Datensatz 699
deklarieren 345-347, 348
DML-Anweisungen und
RETURNING-Klausel 480
DML-Anweisungen, verwenden in 478-481
Restriktionen 481
entsperren 550
in expliziter Cursor RETURN-Klausel 530
Felder, Datentypen 348
Feldoperationen 354-357
Kind- 141
Kompatibilität von 352
Package-Ebene, zwischenspeichern von Daten
aus Benutzertabelle 801
programmiererdefinierte 347
deklarieren mit TYPE-Anweisung 347
Pseudo-Datensätze (siehe Pseudo-Datensätze)
Vergleich 357
Vorteile verwenden 344
Datensatz-Verankerung 173
Datenstrukturen
Collections von zusammengesetzten Typen
389-398
deklarieren in Package-Rumpf 673
deklarieren in Package-Spezifikation 671
deklariert auf Package-Ebene, Persistenz 530
Initialisierung, aufschieben mit geschachtelten Blöcken 797
Namen 164-165
NEW-Pseudodatensätze 699
OLD-Pseudodatensätze 700
Packagearbeiten mit 679-689
instantiieren 674
Datentypen
ANY 461-465, 903-908
ANYDATASET-Typ 904
ANYDATA-Typ 903, 904-907
ANYTYPE-Typ 903
DBMS_TYPES-Package 904
Erstellen eines transienten Typs 907
benutzerdefinierte
selbständige, in clientseitigem PL/SQL 852
(siehe auch benutzerdefinierte
Datentypen)
Boolesche
Java und PL/SQL 942
Java-Typ in PL/SQL konvertieren 967-969
Collection 364
Data Dictionary-Einträge für 418
Datensatzfelder 348
Datum und Uhrzeit 273-283
DATE 273
INTERVAL, unbeschränktes 324
INTERVAL-Typen 279
konvertieren 283-312
TIMESTAMP-Typen 275
deklarieren in Tabellen 365
Hierarchien, REFs und 901
Konvertieren zwischen 179-187
explizit 182-187
externe Prozeduren und 988-989
implizit 180
LOB (Large Object) 429, 432-456
CLOB 430
Konvertierungsfunktionen für 456
SQL-Semantik für 451-456
LONG und LONG RAW 431
löschen 53, 894
mehrere, Unterstützung durch Überladung
853
mischen in einzelnem Ausdruck 321
natives PL/SQL
BOOLEAN 421-423
RAW 423
ROWID, verwenden 426-429
ROWID, Zugriff auf 424
UROWID und ROWID 423
NOT NULL, Verankerung in 178
numerische 241-248
BINARY_INTEGER 246
Konvertierung zwischen 262
NUMBER 242-245
PLS_INTEGER 246
Subtypen 247
Objekt 456-465, 609, 876
ANY (siehe Datentypen, ANY)
Baum von 875-878
Collections von Instanzen 389, 393
URI-Typen 460
XMLType 457-460
ORA_NAME_LIST_T 728
Oracle Server, PL/SQL im Gegensatz zu 646
Oracle9i, Änderungen in 19
Objekt-Typ 20
XML 20
Parameter überladener Programme 643
PL/SQL 165-170
ANY-Datentypen 169
benutzerdefinierte 170
Binärdaten 168
Boolesche Werte 168
Datumswerte, Zeitstempel und Zeiträume
167
REF CURSOR 168
ROWID und UROWID 168
Zahlen 167
REF CURSOR 553
deklarieren 556
RETURN 616
selbständige, Wurzelebene 877
String 198-203
CHAR 199-201
CHAR und NCHAR 198
CHAR- und VARCHAR2-Werte, mischen
204-207
NVARCHAR2- und NCHAR-Datentypen
201
Subtypen 202
VARCHAR2 198
Index
|
1015
Subtypen
Bezeichner aus STANDARD-Package 78
eingeschränkte 178
programmiererdefinierte 178
unbeschränkte 179
(siehe auch Subtypen)
SYS_REFCURSOR 909
unterstützt von NDS 573
UTL_FILE.FILE_TYPE 357
VARRAY und geschachtelte Tabelle, deklarieren 366-368
verankern
Datensatz-Verankerung 173
Skalar 173
verankerte 173
zuordnen
Java und PL/SQL 960
Java, verwenden für 971
PL/SQL und C 985
(siehe auch einzelne Datentypnamen)
Datum 167
Datum und Uhrzeit 272-342
Arithmetik 312-324
Differenz zwischen Datumswerten
berechnen 315
numerische Werte addieren und
subtrahieren 313
Zeiträume 316-324
Datentypen 273-283
DATE 273
INVTERVAL-Typen 279
TIMESTAMP-Typen 275
Datentypen konvertieren 283-312
Datum in String konvertieren 299-304
Datumsformatmodelle 284-288
String in Datum konvertieren 288-299
Zeitraum-Konvertierungen 305-310
Funktionen 325-342
ADD_MONTHS 330
aktuelles DATE und TIME abrufen
326-328
FROM_TZ 332
MONTHS_BETWEEN 334
NEW_TIME 273, 339-341
NEXT_DAY 341
ROUND 335-339
TO_DATE 273
TRUNC 336-339
Zeitzone 328
1016 |
Index
Datumsformatmodelle 284-288
ROUND- und TRUNC-Funktion, Maskenelemente für 336
RR-Element für Jahreszahlen mit zwei und
vier Ziffern 297
Datumsliterale 294
Dauerhaftigkeit von Transaktionen 470
DBA_*-Views 760
DBA_RESUMABLE-View 747
DBD::Oracle-Modul 61
dbgextp.sql-Skript 999
DBMS_DEBUG-API 758
DBMS_JAVA-Package 953-958
Ausgabe, aktivieren aus Java 955, 964
Compiler-Optionen, abrufen und setzen 954
Konvertieren von Java-Langnamen 954
Quellcode, Ressourcen und Klassen exportieren 956
DBMS_JOB-Package 63
DBMS_OUTPUT-Package 8
CASE-Ausdruck, verwenden mit 105
PUT_LINE-Funktion 51
DBMS_PROFILER-Package 787
DBMS_RESUMABLE-Package, ABORT-Prozedur 751-752
DBMS_ROWID-Package 425
DBMS_SHARED_POOL-Package, KEEP-Prozedur 846
DBMS_SQL-Package 510
Beschränkungen von 15
Code-Ausführung, überflüssige vermeiden
796
Vergleich mit NDS 602
Implementierungen eines Programms 602
wann DBMS_SQL notwendig ist 604
DBMS_STANDARD-Package, DDL-TriggerEreignisse und Attributfunktionen 728
DBMS_TRACE-Package 789-793
Programme in 790
DBMS_TYPES-Package 462
DBMS_UTILITY-Package
COMPILE_SCHEMA-Prozedur 769
GET_TIME-Funktion 787
dbmsany.sql-Skript 462
DBUriType 460
DDL (Data Definition Language) 469
ausführen in PL/SQL 15
CREATE JAVA-Befehl 947
Datenbank-Trigger 697, 723-732
Anweisungen zur Verwaltung 754-757
Attributfunktionen 726-728
Ereignisse für 726
Ereignisse und Attribute, Beispiele 728-732
erstellen 724-726
löschen 732
Erstellen einer gespeicherten Prozedur in NDS
in Ausführungsanweisungen 574
execDDL-Prozedur 595
ungültige Operation in System-Trigger 749
Zeitänderung für Datenbankobjekte 821
bedingte Invalidierung von abhängigen
Programmen 825
Deaktivieren von Triggern 754
DEBUG_EXTPROC-Package 999
Debugger für Quellcode 26
Debugging 84, 777-785
Beispiele zu diesem Buch XVI
externe Prozeduren 999
falsche Techniken 778
irrationales Debugging 779
unorganisiertes Debugging 778
gemeinsam nutzen für geringere Speicherbelegung 835-839
Java
erstellen und kompilieren 938
Unterschiede aus PL/SQL 943
Modularisierung 608
Modultest 608, 774-777, 785
mit utPLSQL 774-777
PL/SQL-Objekte, Größe von 816
PL/SQL-Programme 758
Quellcode-Debugger, verwenden 780
serverseitiges PL/SQL, Speicherorte für 815
Strategien 780-785
Daten über den Fehler sammeln 781
erst vollständig analysieren, dann
Lösungen testen 783
inkrementelles Testen 785
logisch denken 782
Pausen machen, Hilfe annehmen 783
Wiederverwendbarkeit von 608
(siehe auch Quellcode)
Debugging-Basis, verwalten und analysieren 758
Debugging-Einheiten 195
INSTR2-Funktion und 216
suchen mit INSTR2-Funktion 219
Debugging-Punkte 195, 211
INSTR4-Funktion und 216
suchen mit INSTR4-Funktion 219
DEBUG-Recht 932
Decision Support Systems (DSS), Server-Hardware und 869
DECODE-Funktion, ersetzen durch IF-Anweisungen 647-648
DECOMPOSE-Funktion 208, 213
Dedicated Server 831
DEFAULT-Operator, Standardwerte für Variablen setzen 171
DEFINE-Befehl, Wertzuweisung zu Variablen 40
definieren
Exceptions 138-146
benannte Exceptions deklarieren 138
benannte System-Exceptions 142
Namen von Exceptions, verbinden mit
Fehlercodes 139-142
Definierer-Rechte 14, 860-864
Auflösen externer Referenzen in Programmen
und Objekt-Typ-Methoden 867
kombinieren mit Aufrufer-Rechten 867
Objekt-Typen, verwenden mit 877
Vorteile 861, 861-864
Datenbankrollen und 861
Debugging und Wartung 862
dynamisches SQL und 863
Definition
autonome Transaktionen 496
Exceptions
Geltungsbereich 144
Funktionsparameter 622
(siehe auch Deklarationen)
Deklarationen 8, 9
; (Semikolon)-Abschlußzeichen 74
autonome Transaktionen 496
Bind-Variablen 41
Boolean-Datentyp (Beispiel) 168
CHAR-Datentyp darin finden 763
Collections 364-373
als Bestandteile eines Datensatzes 368
Collection-Variablen 367
als Funktionsrückgabetyp 369
Index
|
1017
geschachtelte Tabellen oder VARRAYs
366-368
als Modulparameter 369
als Spaltendatentypen 371
Typ definieren 364
Cursor 510
explizite 528-531
Cursor-Variablen 557
von Datensätzen 345-347, 348
programmiererdefinierte 347
DATE-Variablen 274
eingeschränkte 172
eingeschränkte und unbeschränkte 623
Exceptions 10
INTERVAL-Variablen 280
Konstanten und Variablen in Package-Spezifikation 671
NUMBER-Variablen 242
Festkomma- 243
Genauigkeit und Stellen 245
numerischer Datentyp (Beispiel) 167
Package-Cursor 682
Package-Datenstrukturen in Package-Rumpf
673
PLS_INTEGER-Variablen 246
Programmdaten 170-178
Konstanten 171
Variablen 170
verankerte Deklarationen 173-178
programmiererdefinierte Datensätze
Beispiele 349
REF CURSOR-Datentyp 553
String
leere oder NULL-Strings 203
NVCHAR2- und NCHAR-Datentypen 201
Subtypen 202
Strings variabler Länge (VARCHAR2) 198
String-Variablen, Probleme mit Zeichensätzen
191-197
Subtyp 179
TIMESTAMP-Variablen 277
UTL_FILE.FILE_TYPE 357
verankerte
Normalisierung lokaler Variablen 176, 177
NOT NULL-Datentypen 178
Synchronisierung mit Datenbank-Spalten
176
Vorwärts-, von lokalen Modulen 644
1018 |
Index
Deklarationsabschnitte
in anonymen Blöcken 67
in Package-Rumpf 673
prüfen auf unnötige Code-Ausführung 794
dekrementieren, Bereichsgrenze von numerischen For-Schleifen 123
delete( )-Methode 966
delete_file-Funktion 966
deletefile.sql-Package 971
DeleteFile-Klasse 971
DELETE-Prozedur 373, 375, 473
ausführen und speichern oder streichen ohne
Auswirkung auf die Sitzungstransaktion
495
als DML-Trigger 700
OLD- und NEW-Pseudo-Datensätze 705
Information in FORALL-Anweisung abrufen
486
THE-Unterabfrage als Ziel von 411
TRIM und, Anwendung auf VARRAYs 382
WHERE CURRENT OF-Klausel 551-553
DEREF-Funktion 897
DESC (describe)-Befehl (SQL*Plus) 52, 760
deterministische Funktionen 660
Dezimalzahlen
. (Punkt), in Zahlenformatmodell 249
Anzahl von Ziffern rechts oder links vom
Komma (Stellen) 243
D (Dezimalpunkt-Position) in Zahlenformat
249
Festkomma 247
darstellen mit NUMBER-Typ 243
Fließkomma
darstellen mit NUMBER-Typ 242
FLOAT-Datentyp 247
Ziffern für Sekundenbruchteile 277
DIANA-Parse-Baum 808
Abhängigkeiten in serverseitigem PL/SQL 819
Größe von 816
Höchstzahl von Knoten, überschreiten 817
Kompilierung von gespeicherten Objekten
848
dicht besetzte Collections 362
Dienstname 34
Dienstprogramme
CONNECT BY START WITH-Recompiler
824
für Code-Performance-Analyse 787
NDS 601
Oracle, Verbesserung der Nutzbarkeit 689,
693
für PL/SQL Entwickler 26
Digest-Tabelle, Java-Elemente in ein Schema
laden 947
dirContents()-Methode (String) 969
DISCONNECT-Befehl (SQL*Plus) 43
Division durch null (ZERO_DIVIDE-Exception)
144
Division, Rest (MOD-Funktion) 268
DLLs (Dynamically Linked Libraries) 974, 976
DML (Data Manipulation Language) 12, 469-508
ausführen auf objektrelationalen Tabellen 890
autonome Transaktionen 495-508
Cursor-Attribute für Operationen 473
Datenbank-Trigger 697, 698-713
Beispiel 707
erstellen 701-707
Konzepte und Terminologie 699-701
mehrere desselben Typs 713-715
mutierende Tabellen-Fehler 715-723
Datensatz- 18
Datensätze und 478-481
DELETE-Anweisung 473
Exception-Handling 476
Gruppen-, ausführen in PL/SQL 15
Gruppen-DML mit FORALL-Anweisung
481-490
implizite Cursor und 520
Informationen aus DML-Anweisungen zurückliefern 475
INSERT-Anweisungen 471
ausführen und speichern oder streichen
ohne Auswirkungen auf die
Sitzungstransaktion 495
Kapselung auf Objekt-Views 926
Objekt-Berechtigungen und 932
UPDATE-Anweisung 472
Dokumentation für PL/SQL 818
Dokumentation, Oracle- 24
DROP TRIGGER-Anweisung 755
DROP-Befehl 1000
dropjava-Programm 950
DSINTERVAL_UNCONSTRAINED-Datentyp
324
DUAL (Built-in-Tabelle) 811
DUP_VAL_ON_INDEX-Exception 143
durchsuchen
Quellcode 762
nach unnötigem Code 794
durchsuchte CASE-Anweisungen 100, 102
wann verwenden 104
durchsuchte CASE-Ausdrücke 106
Dynamically Linked Libraries (DLLs) 974, 976
dynamischer Methoden-Dispatch 880
dynamischer Polymorphismus 640
dynamisches PL/SQL
definieren 571
NDS, verwenden mit 596-601
drastische Code-Reduktion 599
generischer Rechner-Funktion 600
Regeln für 596
dynamisches SQL 14, 510, 511
Aufrufer-Rechte und 866
Bind-Variablen, Problem mit 837
BULK COLLECT, verwenden mit 543
definieren 571
Definierer-Rechte und 863
dynplsql.sp (Web) 597
E
e oder E in wissenschaftlicher Notation 82
E/A (Eingabe/Ausgabe)
Dateierweitern mit Java-Klasse 966-971
UTL_FILE-Built-in-Package 357
(siehe auch Ausgabe)
Eastern Time 293
EEEE (wissenschaftliche Notation) Suffix in Zahlenformatmodell 249
eigene Java-Klasse, erstellen 942
einengen generischer Elemente 879
einfache CASE-Anweisungen 100
wann verwenden 104
einfache CASE-Ausdrücke 105
einfache Schleifen 8, 116, 118-120
Abschließen mit EXIT und EXIT WHEN-Anweisungen 118
Gründe für Nutzung 118
REPEAT UNTIL-Schleifen emulieren 120
verlassen 9
einfügen, Datensatz in Tabelle 355
Index
|
1019
Eingabe/Ausgabe (E/A)
Datei-E/A-Fähigkeiten, erweitern mit JFileKlasse 966-971
UTL_FILE-Built-in-Package 357
(siehe auch Ausgabe)
eingebettete Anführungszeichen 81
eingebettete Sprachen 4
eingeschränkte Deklarationen 172, 623
eingeschränkte Subtypen 178
einzeilige Kommentare 75, 83
EJB (Enterprise JavaBeans) 935
Elemente
Collection, Werte zuweisen 387
VARRAY, Reihenfolge bewahren 386
ELSE-Klauseln
in CASE-Anweisungen 101
IF-THEN-ELSE-Anweisungen 93
ELSIF-Klausel (IF-THEN-ELSIF-Anweisung) 95
ELSIF-Schlüsselwort 99
END IF-Schlüsselwörter 93
Leerraum zwischen 99
END LOOP-Anweisungen 119
Endlosschleifen (siehe einfache Schleifen)
END-Schlüsselwort
Abschließen von CASE-Ausdrücken 105
in anonymen Blöcken 67
für Funktionen 617
für Prozeduren 613
Englische Sprache, Darstellung mit 7-Bit-ASCII
188
Enterprise JavaBeans (EJB) 935
Entwickler, PL/SQL
Ressourcen für 23
andere Printmedien 24
O’Reilly-Bücher 23
Websites 25
Tips für 27-30
Tools und Dienstprogramme für 26
Entwicklung, Typ- 892-894
Entwurf von PL/SQL-Anwendungen
Clientseite 856
Package-Entscheidungen für Anwendungsentwickler 807
ereignisgesteuertes Modell für Exception-Handling 135
Ereignisse
Datenbankereignis-Trigger 732-740
LOGON 735
1020 |
Index
SHUTDOWN 734
STARTUP 734
ungültige, Auswirkungen von 740
DDL-Trigger 726
Beispiele 728-732
Trigger-Code im Zusammenhang mit 697
DML 698-713
Veröffentlichungs-Feature in Oracle8i 16
Ergebniselemente in CASE-Anweisungen, Skalarwerte in 101
Ergebnismengen 511
erster Monatstag, abrufen 334
Euro-Währungssymbol in Zahlenformatmodell
249
EXCEPTION_INIT-Pragma 85, 136, 140-142
empfohlene Verwendung 141
Exception-Abschnitte 137
in anonymen Blöcken 67
in Package-Rumpf 673
Prozedur zum Finden selbständiger Prozeduren und Funktionen ohne 764
Exception-Handler
Auslösen von Exceptions 146-149
RAISE_APPLICATION_ERROR-Prozedur
148
Behandlung von Exceptions 150-160
mehrere in einem Handler 151
Propagation von unbehandelten
Exceptions 155-157
SQLCODE und SQLERRM in HandlerKlauseln 152
unbehandelte Exceptions 151
Weitermachen nach Exceptions 489
Weiterverarbeitung nach Exceptions 153
Definieren von Exceptions 138-146
benannte Exceptions deklarieren 138
benannte System-Exceptions 142
Geltungsbereich 144
Namen, verbinden mit Fehlercodes
139-142
ereignisgesteuertes Modell für 135
Syntax für Handler 150
Typen von Exceptions 136
Exception-Handling
DML 476
Java 963-965
ROWTYPE_MISMATCH-Exception
559-561
Exceptions 9
%BULK_EXCEPTIONS, Cursor-Attribut
514, 516
auslösen 137, 146-149
auslösen aus C-Programm 994-996
behandeln
Propagation von unbehandelten
Exceptions 155-157
Built-in 78
definieren 138-146
deklarieren 10
Geltungsbereich 70
in Package-Initialisierung 677
programmiererdefinierte, Client-Programme
und 57
Regeln für Behandlung 28
Remote- 854
Standardwertzuweisung in Package-Initialisierungsabschnitt 675
Typen 136
Verfolgung 791
vordefinierte, in STANDARD-Package 822
(siehe auch Exception-Handler)
EXCEPTION-Schlüsselwort 10, 138, 150
execDDL-Prozedur 595
EXECUTE IMMEDIATE-Anweisung 14, 15,
572-575
Ändern numerischer Spaltenwerte in beliebiger Tabelle 574
Funktion beim Abruf der Zeilenzahl in Tabelle oder Schema für WHERE-Klausel 574
EXECUTE-Befehl (SQL*Plus) 38, 513, 810
Cursor-Ausdrücke und 570
EXECUTE-Recht 931
EXISTS-Funktion 373, 376
existsNode-Methode 458
EXIT-Anweisungen 9
Block-Label als Ziele in geschachtelten Schleifen 87
einfache Schleifen, beenden 118
EXIT WHEN im Gegensatz zu 119
mit Schleifen-Label 128
für SQL*Plus 42
EXP-Funktion 268
explizite Collection-Variablen-Initialisierung 383
explizite Cursor 512, 527-542
Attribute 537
in Datenabruf 509
Datenabruf aus 533-534
deklarieren 528-531
mit Parameter 528
mit RETURN-Klausel 529
Namen für Cursor 529
ohne Parameter 528
in Packages 529-531
öffnen 532
Package- 681-686
in Package-Spezifikation 671
Parameter 539-542
Cursor öffnen mit 541
Geltungsbereich von Parametern 541
Generalisieren von Cursorn mit 540
Parameter-Modi 542
Standardwerte 542
schließen 535
Spalten-Aliasnamen in 534
wählen 519-520
Gründe für 519
explizite Datentypkonvertierung 179, 182-187
Exponenten 269
Exponential-Operator (**) 74
EXTEND-Prozedur 373, 377
Extensible Markup Language (siehe XML)
external_parameter_map 985
externe LOBs (BFILEs) 429
externe Programme, Packages und 669
externe Prozeduren 973-1001
Agenten 997
Architektur 976
aufrufen aus PL/SQL 815
Aufrufspezifikationen, schreiben für 983-985
Auslösen einer Exception aus C-Programm
994-996
Beschränkungen 978
Betriebssystembefehl aufrufen 974-976
Debugging 999
Listener konfigurieren
Sicherheitsmerkmale 980
OCI-Routinen für 996
Oracle Net-Konfiguration 978-981
Listener-Konfiguration 978
Oracle-Bibliothek, erstellen 981
Index
|
1021
pflegen 998
Data Dictionary-Einträge 1000
Löschen von Bibliotheken 1000
Warnungen 1000
Zuordnen der Parameter 985-994
externe Referenzen
auflösen mit Aufrufer-Rechten 866
auflösen mit Definierer-Rechten 867
in PL/SQL Programme, auflösen mit AufruferRechten 867
extprocKey-Bezeichner 979
extprocsh()-Funktion 974
extprocSID-Bezeichner 979
EXTRACT-Funktion
Datum/Uhrzeit-Komponentennamen zur Verwendung mit 311
Konvertieren von Datum/Uhrzeit in und aus
Strings 310-312
Zeiträume für Anzeige formatieren 309
F
FAQ-Websites
Oracle 26
für PL/SQL-Entwickler 26
Fehler
GOTO-Anweisung, Verzweigung zu einem
Label außerhalb des Geltungsbereichs 110
Größe von (Fehlertext in Bytes auf der Festplatte) 816
INVALID_CURSOR 538
Kompilieren gespeicherter Objekte 849
Logging mit autonomen Transaktionen 13
mutierende Tabellen 715-723
nicht-reproduzierbarer, Package-Initialisierung und 678
protokollieren mit autonomen Transaktionen
502-505
SHOW ERROR-Befehl 49
Speicherzuweisung im Shared Server-Modus
844
USER_ERROR-View 760
(siehe auch Exceptions)
Fehlerbehandlung 9
dynamische PL/SQL-Blöcke in NDS 597
Erstellen eines einzigen Packages für 28
mit impliziten Cursorn 522-524
1022 |
Index
in NDS-Anwendungen 594-596
in SQL*Plus 45
(siehe auch Exception-Handler; Behandlung
von Exceptions)
Fehlercodes 738
Ermitteln, ob die Nummer im Stack vorliegt
738
Oracle, zurückgeben für Java-Exceptions 963
reservierte Nummern für Oracle-Kunden 148
verbinden mit Exception-Bezeichner 85,
139-142
für vordefinierte Exceptions 143
Fehlermeldungen
automatische Rekompilierung von Programmen 825
cursor already open 532
fetch out of sequence 551
function returned without value 620
Inhalt verstehen 50
maximum open cursors exceeded 537
Oracle, zurückgeben für Java-Exceptions 963
Fehlernummern (siehe Fehlercodes)
Felder (Datensatz), Operationen auf 354-357
feste Breite, Zeichensätze 189
Unicode UTF-16 190
feste Länge, Strings 198
CHAR-Datentyp 199-201
mischen mit VARCHAR2-Werten 204
NCHAR-Datentyp 201
Festkomma-Dezimalzahlen 243
darstellen mit NUMBER-Typ 245
deklarieren 243
NUMERIC, DECIMAL und DEC, Datentypen 247
FETCH-Anweisungen 513
mit Cursor-Variablen 559
ROWTYPE_MISMATCH-Exception
559-561
Datenabruf aus Cursor-Variablen 556
für explizite Cursor 533-534
leere Ergebnismenge, Attributwerte für 538
Datenabruf hinter dem letzen Datensatz
534
Datenabruf in Datensätze 533
Datenabruf in eine Variable 533
FETCH INTO, verwenden mit BULK COLLECT 543
fetch out of sequence-Fehler 551
Initialisieren von Collection-Variablen 385
NDS, Mehrzeilen-Abfragen 579
Rowid für eine Zeile in einer ROWID-Variable 425
File-Klasse 942
Liste()-Methode 969
FIRST-Funktion 373, 378
Flags, Boolesche Variablen als 95
Fließkommazahlen
darstellen mit NUMBER-Typ 245
FLOAT-Datentyp 247
speichern in NUMBER-Typ 242
FLOAT-Datentyp 247
FLOOR-Funktion 264, 268
FM (Füllmodus)-Element
Datumsformatmodell 287, 297, 304
Datumskonvertierung mit TO_CHAR 301
Zahlenformatmodell 249
FOR EACH ROW, angeben vor WHEN-Klausel
704
FOR UPDATE-Klausel 548-553
in explizitem Cursor-SELECT 532
explizite Cursor schließen 536
NOWAIT-Schlüsselwort 550
OF-Klausel 549
(siehe auch SELECT FOR UPDATE-Anweisung)
FORALL-Anweisungen 16, 481-490
%BULK_EXCEPTIONS, Cursor-Attribut 516
Beispiele 485
BULK COLLECT mit RETURNING-Klausel
546-548
Cursor-Attribute für 486
Rollback-Verhalten 488
SELECT…BULK COLLECT-Anweisungen
und 543
Verbessern der PL/SQL-Anwendungsperformance 802
Weitermachen nach Exceptions mit SAVEExceptions-Klausel 489
FORCE-Option mit DROP TYPE-Anweisung
894
Formalparameter 622, 623
dem Aktualparameter zuordnen 624
format exact (FX)-Element, Datumsformatmodell 296-297
formatieren
SQL-Anweisungen für Code-Sharing 835
Zeiträume für Anzeige 309
Formatmodelle
Datum 284-288
ROUND- und TRUNC-Funktion,
Elemente für 336
Zahlen 248
For-Schleifen 8, 116
Cursor 125-127
Beispiele 126
öffnen 533
Probleme beim Beenden 130
Rowids in 428
numerische 122-124
allgemeine Syntax 122
Beispiele 123
Regeln 122
%FOUND, Cursor-Attribut 514, 515
Fremdschlüssel
mutierende Tabellen-Fehler und 716
Oracle-Änderungen in 722
REF-basierte Einschränkung 896
FREMOVE-Prozedur (UTL_FILE-Package) 966
FROM_TZ-Funktion 332
FROM-Klausel, aufrufen von Funktionen aus
651
Füllmodus (siehe FM-Element)
Funktionen 609, 646
aufrufen 9, 618
aufrufen in SQL 645-651
DECODEs durch IF-Anweisungen ersetzen
647-648
Erfordernisse 645
RESTRICT_REFERENCES-Pragma,
Oracle 8i und früher 649-651
Restriktionen für benutzerdefinierte 646
Bezeichner aus STANDARD-Package 78
Collection 373
COUNT 373, 374
DELETE 375
EXISTS 373, 376
EXTEND 377
FIRST und LAST 378
FIRST, LAST 373
LIMIT 373, 379
PRIOR und NEXT 380
Index
|
1023
PRIOR, NEXT 373
TRIM 381
Collection Pseudo-Funktionen 409-417
Collection-Inhalt sortieren 416
Collections als Rückgabewerte 369
COMPOSE 197
Datensätze zurückgeben 353
für Datentypkonvertierung 182-187
CAST 184-186
CHARTOROWID 183
CONVERT 186
HEXTORAW 186
LOBs 456
ROWIDTOCHAR 187
Datum und Uhrzeit 325-342
ADD_MONTHS 330
aktuelles DATE und TIME abrufen
326-328
CAST 320
FROM_TZ 332
LAST_DAY 333
MONTHS_BETWEEN 334
NEW_TIME 273, 339-341
NEXT_DAY 341
NUMTOYMINTERVAL und
NUMTODSINTERVAL 305
ROUND 335-339
TO_CHAR 300-304
TO_DATE 273, 289
TO_DSINTERVAL 306
TO_TIMESTAMP-Funktionen 290
TO_YMINTERVAL 306
TRUNC 315, 336-339
Zeitzone 328
DDL-Trigger-Attribut 726-728
Rückgabelisten 731
definiert als autonome Transaktionen 495
deklarieren in Package-Spezifikation 671
DEREF 897
deterministische 660
END-Label 617
ermitteln, welche DML-Aktion den aktuellen
Trigger auslöste 706
extprocsh() (C) 974
generischer Rechner 600
gespeicherte
ausführen 50, 618
erstellen 47-50, 613
zeigen 51
1024 |
Index
GET_TIME 787
Höchstzahl der Übergabeparameter 818
im Arbeitsspeicher halten 846
Introspektion, Datentyp in ANY-Typen ermitteln 462
Köpfe 69, 619
LENGTH 194
LENGTHB 194
NLS- 238-240
numerische 262-271
ABS 264
ACOS 265
ASIN 265
ATAN 265
ATAN2 266
BITAND 266
CEIL 267
COS 267
COSH 267
EXP 268
FLOOR 268
LN 268
LOG 268
MOD 268
POWER 269
ROUND 269
SIGN 270
SIN 270
SINH 270
SQRT 270
TAN 271
TANH 271
TRUNC 271
OPEN_CURSOR-Funktion (DBMS_SQLPackage) 796
ORA_IS_ALTER_COLUMN 729
ORA_SPACE_ERROR_INFO 750
Package-, Vorteile 664
ohne Parameter 619
Parameter von (siehe Parameter)
REFTOHEX 899
RETURN-Anweisung 620
RETURN-Datentyp 616
Rumpf 620
schreiben 613-621
selbständige
einhüllen 766
ohne Exception-Abschnitt 764
SERVERERROR 736-738
SQL- und PL/SQL-, anwenden in LOBs 453
SQL-Built-ins, aufrufen aus Trigger-WHENKlausel 704
in STANDARD-Package 822
Standardkonstruktoren 368
Struktur von 614-616
SUBSTR 771
Synonyme für 53
Tabelle 18, 651-660
aktivieren für Parallelausführung 658-660
aufrufen aus einer FROM-Klausel 651
Pipeline 651, 653
transformative 651, 654-658
TREAT 890-892
Übergeben von assoziativen Arrays als Parameter 402
Übergeben von Cursor-Variablen als Parameter 565
Übergeben von Cursor-Variablen an 555
überladen 643, 666
(siehe auch Module, überladen)
UPPER, anwenden auf CLOB 453
USER_ARGUMENTS-View 760
VALUE 887-889
XML 458
Zahlenkonvertierung
CAST 260
TO_CHAR 248, 254-259
TO_NUMBER 248, 250-254
Zeichen 195, 208-238
ASCII 209
ASCIISTR 209
CHAR-Parameter und 207
CHR 210
COMPOSE 211
CONCAT 212
DECOMPOSE 213
GREATEST-Funktion 214
INITCAP 214
INSTR2-Funktion 216
INSTR4-Funktion 216
INSTRB-Funktion 215
INSTRC-Funktion 216
INSTR-Funktionen 215-220
LEAST 220
Liste 208
LOWER-Funktion 222
LPAD-Funktion 222
LTRIM-Funktion 223
NCHR-Funktion 211
READ-Funktion 226
REPLACE-Funktion 224-226
RTRIM-Funktion 227
SOUNDEX-Funktion 228
SUBSTR-Funktionen 229-232
TO_CHAR 232
FX (format exact)-Element, Datumsformatmodell 296-297
G
G (Gruppen)-Trennzeichen in Zahlenformat 249
geclustert 659
Geltungsbereich 65, 70
Blöcke 65
Cursor-Parameter 541
Cursor-Variablen und-Objekte 564
Exceptions 137, 144
explizite Cursor, Cursor-Parameter und 539
globale Variablen 73
IF-Anweisungen, GOTO-Anweisungen und
110
lokale Module 638
numerische FOR-Schleifenindizes 122
Savepoints 493
Schleifen, auf Effizienz prüfen 794
Ziel-Label für GOTO-Anweisungen 108, 109
Genauigkeit 243
in INTERVAL-Variablen 280
INTERVAL-Typen 322
mehr Stellen als Genauigkeit 244
in NUMBER-Variablendeklarationen 245
Ziffern für Sekundenbruchteile 277
generische Datentypen (siehe ANY-Datentypen)
geschachtelte Blöcke 69
aufschieben der Datenstruktur-Initialisierung
797
Exceptions auslösen in 147
maximale Schachtelungstiefe 818
geschachtelte CASE-Anweisungen 104
geschachtelte Collections 394-398
mit anonymen Spalten 397
geschachtelte Datensätze 348, 355
Index
|
1025
geschachtelte IF-Anweisungen 97-99
geschachtelte Schleifen, Block-Label als Ziele von
EXIT-Anweisung 87
geschachtelte Tabellen 360
CAST-Funktion, Konvertieren mit 185
Dateien bearbeiten als 970
definieren 364
Skalare, Elemente referenzieren 411
als Spaltendatentypen, VARRAYs im Gegensatz zu 372
Typ deklarieren 366-368
Vergleich mit assoziativen Arrays und VARRAYs 418
von Objekten 403
geschachtelte Tabellenspalten 363
Trigger 17
geschachtelte Transaktionen (siehe autonome
Transaktionen)
gespeicherte Funktionen in SQL, Restriktionen
646
gespeicherte Objekte
Anzeigen von Informationen über 760
kompilieren in serverseitiges PL/SQL 848
gespeicherte Programme
ausführen 50
erstellen 47-50
Größe 816
löschen 53
Rechte und Synonyme für 52
Verbergen von Quellcode 54
zeigen 51
gespeicherte Prozeduren
Ausführen eines Programms mit Aufrufen an
813
Java 935
aufrufen aus PL/SQL 814
Oracle-Unterstützung für 873
Zugriff aus Oracle 936
Programm ausführen, das sie aufruft 812
gespeicherter Code, schützen 758, 764
GET_COMPILER_OPTIONS-Prozedur 954
GET_TIME-Funktion (DBMS_UTILITY-Package) 787
getErrorCode()-Methode 963
getMessage() 963
GetType-Methode (ANYDATA) 905
Gleichheit
testen in PL/SQL 883
1026 |
Index
ungleich, relationale Operatoren 74
Vergleich für Objekte 912
Vergleichen von NULL-Werten 204
Zeichen-Strings, testen auf 197
globale Daten
globale Variablen 73
öffentliche Package-Daten 681
Package-Datenstrukturen 843
globale Konstanten, emulieren mit ObjektMethoden 888
globale Variablen 73
Package-Datenstrukturen als 680
globaler Speicher für serialisierte Packages 688
Globalization Support Guide (Oracle) 253
GMT (Greenwich Mean Time) 277
GNU C-Compiler, Shared Library generieren 974
GOTO-Anweisungen 9, 108-111
ausführbare Anweisungen nach dem Label
109
Block-Label als Ziele 87
Geltungsbereich Ziel-Label 109
Restriktionen 108
Ziel-Label für 111
GRANT EXECUTE-Anweisungen 14
graphischer Debugger 758
GREATEST-Funktion 208
(siehe auch LEAST-Funktion)
Greenwich Mean Time (GMT) 277
Grenzen von Schleifen 117
Groß- und Kleinschreibung
Anfangsbuchstaben jedes Worts im String
groß schreiben 214
Großschreibung von Strings 239
Kleinschreibung von Strings 239
Strings in Kleinschreibung konvertieren 222
Übereinstimmung in Quellcode für Anweisungs-Sharing 835
Wörter mit großem Anfangsbuchstaben in
Strings 239
Groß- und Kleinschreibung, bedeutend
in Java 943
in String-Literalen 81
Groß- und Kleinschreibung, egal 74
Groß- und Kleinschreibung, egal in PL/SQL 74
in Bezeichnern 76
Namen von Datenstrukturen 164
große Objekte (siehe LOB-Datentypen)
Größe von gespeicherten Programmen 816
große Zeichenobjekte (siehe CLOB)
größer als (>=)-Operator 75
GROUP BY-Klausel in SELECT-Anweisungen
518
GROUP BY-Prozedur 581
Package für 583
Gruppen (G)-Trennzeichen in Zahlenformat 249
Gruppen-Binds 15
Gruppen-DML mit FORALL-Anweisung
481-490
Rollback-Verhalten 488
H
Handler für Exceptions 137
Syntax 150
(siehe auch Exception-Handler)
Handles für Objekte (siehe Bezeichner)
Hardware für PL/SQL 868-870
Einzelprozessor 868
geclusterte 870
symmetrische Mehrprozessor (SMP) 869
Hardware- und Betriebssystem-Beschränkungen
für Uhrzeit-Genauigkeit 328
hart geschlossene Cursor 834
Hash-Index, füllen und ansprechen 408
Hash-Tabelle 947
HAVING-Klausel in SELECT-Anweisung 518
Hexadezimal-Strings, Konvertieren aus CHAR
oder VARCHAR2 in RAW 186
Hexadezimalwerte
von REFs 899
in Zahlenformatmodell 249
HEXTORAW-Funktion 186
Hilfe für Entwickler 28
Hilfebildschirm, anzeigen für loadjava 949
Hintergrundprozesse in der Oracle SGA 830
Homogenität von Tabellen 361
Host-String 35
Host-Variable (:)-Zeichen 74
HTML-Seiten, PL/SQL einbetten 62
HttpUriType 460
hyperbolische Sinusfunktion 270
hyperbolische Tangensfunktion 271
hyperbolischer Kosinus-Funktion 267
I
IDEs (Integrierte Entwicklungsumgebungen) 780
Java 936
PL/SQL 26
IF-Anweisungen 8, 9, 91-99
DECODE-Funktion, ersetzen durch 647-648
Geltungsbereich von IF-Klauseln in 110
geschachtelte 97-99
IF-THEN 92
IF-THEN-ELSE-Kombination 93
IF-THEN-ELSIF-Kombination 94
NULL-Werte in 96
Syntaxfehler, vermeiden 99
Vergleich zweier VARCHAR2-Werte 204
IF-Bedingungen in GOTO-Anweisungen 110
implizite Initialisierung einer Collection-Variable
mit direkter Zuweisung 384
implizite Cursor 473, 511, 520-527
Attribute 524-526
Beispiele 521
Cursor-Ausdrücke und 570
in Datenabruf 509
Fehlerbehandlung 522-524
wählen 519-520
implizite Initialisierung einer Collection-Variable
383
FETCH-Anweisung, verwenden 385
implizite Konvertierungen 180
String in Datum 288
TIMESTAMP-Typen in DATE 314
zwischen VARCHAR2 und CLOB-Typen 452
zwischen Zahlen und Strings 260
IN OUT-Bindungsparameter 587
IN OUT-Modus, Parameter 627, 629
INDICATOR-Eigenschaft für 991
Java-Wrapper und 960
IN-Bindungsparameter 587
Index-by-Tabellen (siehe assoziative Arrays)
Index-organisierte Tabellen (IOTs) 424
INDICATOR-Eigenschaft 991
Indikatorvariable-Parameter 986
indirekt referenzieren 599
Indizes
Collection
alternative Indizes emulieren 408
indiziert mit Integern 362
indiziert mit Strings 362, 406
Index
|
1027
erstellen mit EXECUTE IMMEDIATE-Anweisung 573
Schleifennicht-triviale Inkremente 124
numerische FOR-Schleifen, Regeln für 122
Informationen verbergen 668
init.pkg, Zwischenspeichern eines einzigen
Datensatzes 801
INITCAP-Funktion 208, 214
initialisieren
Collection-Variablen 382-387
mit Konstruktoren 383
Datenstrukturen, aufschieben mit geschachtelten Blöcken 797
Packages 669, 674-678
Initialisierungsabschnitt von Packages 673
Ausführung von 674
Beispiel 675
Initialisierung scheitert 677
Nebeneffekte, vermeiden 676
Zuweisung von Standardwerten 678
Zwischenspeichern statischer Sitzungsinformationen 676
Inkremente (nicht-triviale) in numerischen ForSchleifenindizes 124
IN-Modus, Parameter 627, 645
innere Tabellen 363
IN-Operator 206
INSERT-Anweisungen 471
ausführen und speichern oder streichen ohne
Auswirkungen auf die Sitzungstransaktion
495
Datensätze, verwenden in 18
als DML-Trigger
OLD- und NEW-Pseudo-Datensätze 704
DML
Datensätze, verwenden in 478
Restriktionen für Datensatz-basierte 481
INSERT SELECT FROM-Anweisung 471
THE-Unterabfrage als Ziel von 411
INSERT-Trigger
AFTER INSERT 700
BEFORE INSERT 702, 713
INSTEAD OF 742
Instantiieren von Objekten 879
vor der Zuweisung von Attributwerten 884
Instanzen von Objekt-Typen 609
1028 |
Index
INSTEAD OF-Trigger 698, 740-746, 922
Aktualisierung von Objekt-Views 925-927
erstellen 740-742
INSERT 742
Objekt-Views, verbessern mit 917
UPDATE 744
INSTR-Funktionen 195, 215-220
INSTR und INSTRB, Unterschiede 218
INSTR2 208, 216
INSTR2 und INSTR4, suchen nach Code-Einheiten und Code-Punkten 219
INSTR4 208, 216
INSTRB 215
INSTRB-Funktion 195, 208
INSTRC 208, 216, 218
Integer 82, 167
BINARY_INTEGER-Datentyp 246
NATURAL- und POSITIVE-Subtypen 248
Collections mit Integer-Index 362
speichern in NUMBER-Typ 242
vorzeichenbehaftete, speichern in
PLS_INTEGER-Typ 246
Integrierte Entwicklungsumgebungen (IDEs) 780
Java 936
PL/SQL 26
International Standards Organization (ISO)
Datum 288
Währungszeichen 250
Internationalisierung, Oracle-Unterstützung für
253
interne LOBs (BLOBs, CLOBs und NCLOBs)
429
Interpretation von Bytecode in der virtuellen
Maschine von PL/SQL 808
Interpreter für SQL und PL/SQL 32-54
INTERVAL-Datentypen 279
INTERVAL DAY TO SECOND 279, 316, 317
Ergebnis der Subtraktion zweier
TIMESTAMP-Typen 316
numerische Werte konvertieren 305
INTERVAL YEAR TO MONTH 279, 280, 316
Differenz zwischen zwei Daten 319
INTERVAL YEAR TO MONTH-Datentyp
numerische Werte konvertieren 305
wann verwenden 281-283
warum es zwei gibt 283
INTO-Klausel 520
BULK COLLECT-Variante 16
für EXECUTE IMMEDIATE-Anweisung 573
(siehe auch BULK COLLECT-Klausel)
Introspektionsfunktionen 462
INVALID_CURSOR-Exception 143, 538
INVALID_NUMBER-Exception 143
INVALID-Module, manuell kompilieren 762
IS DANGLING-Operator 903
IS OF-Operator 891
ISO (International Standards Organization)
Datum 288
Währungszeichen 250
Isolation von Transaktionen 469
Ebenen einstellen 494
%ISOPEN, Cursor-Attribut 514, 516, 532, 537
referenzieren für Cursor-Variablen 555
iSQL*Plus-Programm 32
IS-Schlüsselwort 9
iterative Steuerungsanweisungen 8, 115-133
iterative Steuerungsstrukturen
(siehe auch Schleifen)
J
J (Julianisches Datum)Formatmaske 289
Jahre
Definieren von Zeiträumen 279
in ISO-Daten 288
zwei Ziffern, übersetzen in vier Ziffern 297
Jahrhunderte, RR-Datumsformatmodell und 297
Java
aufrufen aus PL/SQL 17, 935-972
Aufrufspezifikationen 958
Datei-E/A-Fähigkeiten, erweitern 966-971
Datentypen zuordnen 960
Exception-Handling 963-965
Java installieren 937
Oracle und Java 935-937
PL/SQL-Fähigkeiten erweitern 971
SQL, aufrufen aus 962
Wrapper, Regeln 960
Bücher 938
gespeicherte Prozeduren
aufrufen aus PL/SQL 814
Oracle-Unterstützung für 873
installieren 937
Objekte, Namen in PL/SQL 165
PL/SQL mit JDBC aufrufen 60
SQL*Plus Worksheet 32
this (Schlüsselwort) 882
Website für 937
Zugriff aus PL/SQL
Beispiel 941-947
Berechtigungen für Entwicklung und
Ausführung 938
DBMS_JAVA-Package, verwenden 953-958
Erstellen und Kompilieren von Java-Code
938
geladene Java-Elemente in Oracle 952
Java-Namensraum in Oracle 951
Java Development Kit ( JDK) 937
JAVA$OPTIONS-Tabelle 954
javac-Compiler 937
Java-Methoden in PL/SQL veröffentlichen
Regeln für Wrapper 960
Javasoft-Website, JDK herunterladen 937
JAVAUSERPRIV 939
JDBC (Java DataBase Connectivity)
Objekte in Oracle-Datenbank löschen 963
PL/SQL aufrufen 60
JDelete-Klasse 942-945
delete( )-Methode 966
main-Methode, hinzufügen 944
PL/SQL-Wrapper für 946
JDeveloper 936
JDK (Java Development Kit) 937
JFile-Klasse 966-971
Verzeichnisinhalt, abrufen 969
JServer 935
JServer Accelerator 935
JSPs (Java Stored Procedures) 935
Zugriff in Oracle 936
JVM (Java Virtual Machine) 935
K
Kapselung
von Datenbearbeitung in Packages 689, 690
Informationen in Package-Cursorn 531
von Logging-Mechanismus 503
auf Objekt-Views 925-927
Variablen, in Cursorn referenzierte 520
KEEP-Prozedur (DBMS_SHARED_POOL-Package) 846
Kind-Datensätze 141
Index
|
1029
Klassen
Javaeigene erstellen 942
exportieren aus Schema 956
File 942
JFile 966-971
kompilieren und laden in Oracle 943
Konvertieren von Namen in Kurznamen
954
laden in Oracle 936, 971
löschen 950
PL/SQL-Wrapper für 946
statische Methoden im Zusammenhang
mit 943
Java oder C++ 876
Masterklasse, Wurzel 877
Klassenbibliotheken, Java- 935
kleiner als (<=)-Operator 75
Kommandozeilen-Dienstprogramme
dropjava 950
loadjava 947-950
wrap 54
Kommandozeilen-Interpreter für SQL und
PL/SQL 32-54
Kommentare 8, 40, 83
-- einzeiliger Kommentar, Zeichen 75
/* und */ mehrzeilig, Begrenzungszeichen 70,
75
im Zusammenhang mit Transaktionen 491
kompilieren
anonyme Blöcke in serverseitiges PL/SQL 847
gespeicherte Objekte in serverseitiges PL/SQL
848
INVALID-Module, manuell 762
Java-Klasse 943
PL/SQL-Code in nativen Objekt-Code 758,
767-769
interpretierter im Gegensatz zum
kompilierten Modus 769
kompilierte Programme, anonyme Blöcke in 69
Komponenten (Oracle) für Java 936
Kompression, Datei- 971
Konsistenz von Transaktionen 469
Konsolenprogramm, SQL*Plus als 32
Konstanten 163
Ablaufverfolgung steuern mit 791
deklarieren/definieren 171
1030 |
Index
für ANYDATA- oder ANYDATASETVariablen 462
in Package-Spezifikation 671
globale, emulieren mit Objekt-Methoden 888
Package-, Zustand pflegen 842
Package-Initialisierung und 674
String 207
Konstruktormethoden
benutzerdefinierte 879-881
Collections initialisieren 383
definieren 878
statische Methode als Pseudokonstruktor 884
Kontextwechsel zwischen PL/SQL und SQL 482
mindern mit BULK COLLECT 542
Probleme mit 484
Kontextzeiger im aufgerufenen Programm 985
konvertieren
Datenbank-Spaltenwerte in Variable anderen
Typs 204
zwischen Datentypen 179-187
explizit 182-187
externe Prozeduren und 988-989
implizit 180
Datums- und Uhrzeit-Datentypen 283-312
Datum in String konvertieren 299-304
in und aus Strings 310-312
String in Datum konvertieren 288-299
Zeitraum-Konvertierungen 305-310
Landessprachen-Zeichensatz-Daten in Datenbank-Zeichensatz 208, 232
LOBs (Large Objects), Funktionen für 456
Multibyte-Zeichen in Single-Byte 209
Single-Byte-Zeichen in Multibyte 208
Strings in ASCII-Zeichen 208, 209
Strings in Datum 273
Strings in Unicode 209
Strings in Zahlen mit TO_NUMBER-Funktion 250-254
Variablen in Datenbank-Spaltenwerte 205
Zahlen in Zeichen, mit TO_CHAR-Funktion
254-259
gescheiterte Konvertierung 257
Zahlen in/aus Strings
CAST-Funktion 260
implizit 260
Köpfe 9
Cursor-, trennen vom Rumpf 531
Funktions- 69, 619
delete_file-Funktion 967
Module 644
Prozedur- 69, 612
kyrillische Zeichen 189
L
L (Location) vom lokalen Währungssymbol 249
Label
Begrenzungszeichen für (<< und >>) 74
für Blöcke 86-87
NULL-Anweisungen, verwenden hinter
114
Ziele für GOTO-Anweisungen 108, 111
für Schleifen 127
Laden von Java-Klassen
CREATE OR REPLACE JAVA-Anweisungen
971
Laden von Klassen 943
Landessprachen-Zeichensatz 190
Konvertieren von Daten in Datenbank-Zeichensatz 208, 232
National Language Support (NLS) für Character Large Object (NCLOB) 166, 429
NVARCHAR2 und NCHAR-Datentypen 201
String-Datentypen und 198
String-Konstanten, darstellen in 207
Zeichencodes übersetzen in 211
(siehe auch NLS)
Länge null, String-Literal 204
Länge von Strings 196
feste Länge (CHAR) 199
(siehe auch LENGTH-Funktionen)
LANGUAGE-Klausel in Aufrufspezifikationen
959
LAST_DAY-Funktion 333
LAST-Funktion 373, 378
Latches für den Library Cache 836
Laufzeitarchitektur, PL/SQL 807-871
Laufzeitumgebung, PL/SQL 809
LEAST-Funktion 208
(siehe auch GREATEST-Funktion)
Least-Recently-Used (LRU)-Algorithmus zum
Schließen von Cursorn 834
leere Strings 203-204
Leerzeichen (siehe Whitespace)
Leerzeichenauffüllung im String-Vergleich 205
Leerzeilen, unterdrücken in Strings 211
LENGTH-Eigenschaft 991-992
LENGTH-Funktionen 194, 208, 220-222
LENGTH 208
LENGTH2 208
LENGTH4-Funktion 208
LENGTHB 208
LENGTHB-Funktion 194
LENGTHC 208
les- und schreibbare Parameter 627
Lesbarkeit von Code 637
lexikalische Einheiten von PL/SQL 75
Bezeichner 75-77
reservierte Wörter 77
Whitespace und Schlüsselwörter in Namen
80
Kommentare 83
Literale 80-82
Library Cache 813, 831
Library Cache Latch 836
LIKE-Bedingung
% Multibyte-Wildcard-Symbol 74
Single-Byte-Wildcard (_) 74
LIMIT-Funktion 373, 379
LIMIT-Klausel mit BULK COLLECT 544
Collections von Datensätzen 546
Liste gespeicherte Programme 51
Liste()-Methode (File) 969
Listen
Rückgabe von DDL-Trigger-Attributfunktionen 731
Listener, externe Prozedur 978
konfigurieren 978
Sicherheitsmerkmale in der Konfiguration 980
Literale 80-82, 172
Bind-Variablen und 837
Boolesche 82
Datum und Uhrzeitstempel 294
feste Länge, CHAR-Datentyp 206
hartcodieren, vermeiden mit Packages 689,
692
numerische 82
Stringkonvertieren in numerischen Wert 180
Länge null 204
mit Präfix N 190
Zeitstempel 289
Index
|
1031
LN-Funktion 268
loadjava-Befehl
JDelete-Klasse, laden 945
loadjava-Programm 936, 947-950
Kommandozeilenoptionen 949
Syntax 947
LOB (Large Object)-Datentypen 166, 429,
432-456
BFILE 430
BLOB 430
CLOBs 430
interne und externe 429
Java-Schemaobjekte als BLOBs exportieren
957
Konvertierungsfunktionen 456
Laden von Java-Code-Elementen als 947
NCLOB 429, 431
SQL-Semantik für 451-456
Performance-Auswirkungen 454
temporäre LOBs 453
LOCALTIMESTAMP-Funktion 327
LOCK TABLE-Anweisung 491, 494
logarithmische Funktionen 263
LOG-Funktion 268
Logging
autonome Transaktionen, verwenden für 13,
497, 502-505
Fehler 136
LOGIN_DENIED-Exception 143
logische Steuerungsanweisungen (siehe Steuerungsanweisungen)
logisches AND (BITAND-Funktion) 266
LOGOFF-Trigger 735
ungültiger, Auswirkungen 740
LOGON-Trigger 735
ungültiger, Auswirkungen 740
lokale Module 634
Code verbessern 638
Geltungsbereich 638
Vorteile 635-638
Vorwärtsdeklaration von 644
lokale Prozeduren 634
lokale Variablen
Bind-Variablen einsetzen für 812
Normalisierung 176, 177
Lokales (L) Währungszeichen in Zahlenformatmodell 250
1032 |
Index
LONG RAW-Datentyp 168, 431
Konvertieren in BLOB 456
LONG-Datentyp 431
Konvertieren in CLOB 456
LONGNAME-Prozedur 954
löschen
Bibliotheken 1000
Dateien 942
JDelete-Klasse 942-945
aus PL/SQL 946
UTL_FILE.FREMOVE-Prozedur 966
Datenbank-Objekte, mit Java-Klasse 963
DDL-Trigger 732
gespeicherte Programme 53
Objekte 908
Spalten, Löschversuche ermitteln 730
Typen 894
LOWER-Funktion 208, 222
LPAD-Funktion 208, 222
LTRIM-Funktion 208, 223
M
main-Methode (Java) 944
MAP-Methode, Objektvergleich mit 912
ORDER-Methode im Gegensatz zu 915
maschinenabhängiger Pseudocode (Bytecode)
808
Massenverarbeitung in Datenabruf 512
MAXLEN-Eigenschaft 993
mcode 808
Mehrzeilen-Abfragen
NDS OPEN FOR-Anweisung 576
NDS, mit Cursor-Variablen 577-584
generische GROUP BY-Prozedur 581
generisches GROUP BY-Package 583
USING-Klausel in OPEN FOR 580
Vorgehensweise 577
mehrzeilige Kommentare 84
Member-Methoden 878
SELF-Schlüsselwort und 882
Vergleich (Abbildungs- oder Ordnungs)-Methoden 883
Metadaten
Speicherorte in serverseitigem PL/SQL 815
Zwischenspeichern in SGA-Shared Pool 831
Methoden
aufrufen 880
Collection- 373-382
COUNT 374
DELETE 375
EXISTS 376
EXTEND 377
FIRST und LAST 378
LIMIT 379
PRIOR und NEXT 380
TRIM 381
definiert als autonome Transaktionen 496
Java 935
aufrufen aus SQL 962
Java-Datentypen denen von PL/SQL
zuordnen 960
Konvertieren von Langnamen in
Kurznamen 954
main- 944
PL/SQL-Wrapper für 958, 960
Zugriff aus Oracle 936
Objekt-Typ 878-885
benutzerdefinierter Konstruktor 879-881
Emulieren globaler Konstanten mit 888
hinzufügen 894
löschen 893
statische 883
statische Methode als Pseudokonstruktor
884
Vergleich 883
Verkettung 885
XMLType 458
MI (Minuszeichen)-Suffix in Zahlenformat 249
Microsoft-Betriebssysteme
DLLs (Dynamically Linked Libraries) 974
Java-Ressourcen in Oracle laden 948
Windows Code Page 1251, 8-Bit-Latin/Cyrillic-Zeichensatz 189
Windows XP
Debugging externer Prozeduren 999
Umgebungsvariablen für externe ProzedurListener 980
Windows, loadjava aus DOS-Fenster ausführen 948
Minuten, Zeiträume definieren 279
MOD-Funktion 268
Modi
Bindungsparameter 587
für Cursor Parameter 542
Cursor-Variablenparameter 566
Kompilierung 769
Parameter 626-630
Funktionen in SQL aufrufen 645
NOCOPY-Hinweis für Modus 630-632
Modularisierung 608
Wichtigkeit 661
Module
Geltungsbereich 70
gespeicherte Funktionen aufrufen 647
GOTO-Anweisungen in lokalen 111
lokale 634
Code verbessern 638
Geltungsbereich 638
Vorteile 635-638
Vorwärtsdeklaration 644
Modultest 785
überladen 639-643
Restriktionen 643
Vorteile 640
ungültige, manuell kompilieren 762
Modulköpfe 644
Modulnamen, Bezeichner damit qualifizieren 73
Modulparameter, Collections als 369
Modultest 608, 758, 771, 774-777
einzelne Module 785
Projekt, Website 777
utPLSQL (Framework für PL/SQL Entwickler) 26
Monate
ADD_MONTHS-Funktion 330
Berechnen von Zeiträumen 279, 283
erster Tag, abrufen 334
letzter Tag des Monats für ein gegebenes Datum 333
MONTHS_BETWEEN-Funktion 334
MTS (Multithreaded Server) (siehe Shared Server)
Multibyte-Wildcard (%)-Symbol 74
Multibyte-Zeichen
in Single-Byte-Zeichen konvertieren 208
konvertieren in Single-Byte 209
Multibyte-Zeichensätze 189
feste Breite, Unicode UTF-16-Zeichensatz 190
UTF-8 190
variable Breite, String-Variablen und 192
MULTISET-Pseudofunktion 410, 414
Index
|
1033
Multithreaded Server (MTS) (siehe Shared Server)
mutierende Tabellen-Fehler 715-723
Fremdschlüssel und 716
umgehen 718-722
N
N (Landessprachen-Zeichensatz)-Präfix für
String-Konstanten 207
Namen
Bezeichner, qualifizieren mit Modulnamen 73
Datenstrukturen 164-165
Exceptions 138
explizite Cursor 529
Java-Klasse und -Methode, konvertieren in
Kurznamen 954
Konflikte zwischen PL/SQL und SQL, vermeiden
identische Variablen- und Spaltennamen
518
Standard-Namenskonventionen für
PL/SQL-Variablen 519
Programmdaten
Konsistenz 165
Schleifen 127
Schleifenindizes 129
Zeichensätze 191
(siehe auch Bezeichner)
Namensauflösung 812
aufgeschobene, für Elemente im ClientPL/SQL 859
Namensraum
Java, in Oracle-Datenbank 951
für Objekt-Typen 877
National Institute of Standards und Technology
(NIST), Dokument über UTC 277
Native Dynamic SQL (siehe NDS)
native Kompilierung von PL/SQL-Code 22, 758,
767-769, 814
DBA-Setup für 768
Programme finden 816
nativer Compiler (JServer Accelerator) 935
NATURAL-Datentyp 167, 248
natürlicher Logarithmus, Funktion 268
NCHAR-Datentyp 198
Landessprachen-Zeichensatz für 190
NCHR-Funktion 211, 238
1034 |
Index
NCLOB-Datentyp 431
Konvertieren von CLOB in 456
Landessprachen-Unterstützung für 166, 429
NDS (Native Dynamic SQL) 14, 510, 572
Anweisungen 572-576
EXECUTE IMMEDIATE 572-575
OPEN FOR 575
Anwendungen erstellen mit 593-601
dynamisches PL/SQL, verwenden 596-601
Programme mit Aufrufer-Rechten
gemeinsam nutzen 593
Bind-Variablen 584-590
Beschränkungen 585
doppelte Platzhalter 588
NULL-Werte als Bindungsparameter 589
Parameter-Modi 587
Verkettung im Gegensatz zu 584
Datentypen, unterstützte 573
Erstellen von Anwendungen mit
Fehlerbehandlung 594-596
Mehrzeilen-Abfragen mit Cursor-Variablen
577-584
FETCH-Anweisung 579
generische GROUP BY-Prozedur 581
generisches GROUP BY-Package 583
USING-Klausel in OPEN FOR 580
Objekte und Collections 590-592
utility-Package 601
Vergleich mit DBMS_SQL 602
Implementierungen eines Programms 602
Nebeneffekte
von globalen Datenstrukturen 681
Package-Initialisierungsabschnitt, vermeiden
in 676
negative Stellen 244
NESTED TABLE ... STORE AS-Klausel 372
9 signifikante Ziffern in Zahlenformatmodell 249
NEW_TIME-Funktion 273, 339-341
NEW-Pseudo-Datensätze 699
in DML-Trigger, Beispiel 702
DML-Trigger, verwenden mit 704-706
Feinabstimmung, Trigger-Ausführung mit
712
Newsletter, Oracle Professional 25
NEXT_DAY-Funktion 341
NEXT-Methode 373, 380
nicht-druckbare Zeichen, im Eingabe-String 210
nicht-sequentielle assoziative Arrays 398-402
NIST (National Institute of Standards und Technology), Dokument über UTC 277
NLS (National Language Support)
Funktionen 238-240
NLS_INITCAP-Funktion 239
NLS_LOWER 239
NLS_UPPER 239
NLSSORT 240
Parametereinstellungen
CAST-Funktion, Konvertierung von
Datum/Uhrzeit-Werte in/aus Strings
310
NLS_CURRENCY 250
NLS_DATE_FORMAT 285, 288
NLS_DUAL_CURRENCY 250
NLS_ISO_CURRENCY 250
NLS_LENGTH_SEMANTICS 192
TO_TIMESTAMP-Funktionen 290
übergeben an TO_CHAR 259
übergeben an TO_NUMBER 252
NLS_DATABASE_PARAMETERS-View, abfragen auf Zeichensatz-Unterstützung 190
NO_DATA_FOUND-Exception 10, 143
in impliziten Cursor-SELECT-Anweisungen
522
NOCOPY-Parametermodus-Hinweis 630-632
Auswirkungen 632
Restriktionen 631
/NOLOG-Option für SQL*Plus-Start 34
NOT FINAL-Schlüsselwort 876
NOT NULL-Datentyp
Einschränkung in Datensatz-Felddeklarationen 350
verankerte Subtypen und 179
Verankerung 178
Werte für Variablen 172
NOT_LOGGED_ON-Exception 143
%NOTFOUND, Cursor-Attribut 514, 515, 534
referenzieren für Cursor-Variablen 555
NOWAIT-Schlüsselwort 495, 550
nth_appearance-Parameter (INSTR-Funktion)
216
0 (null), in Zahlenformatmodell 249
NULL-Anweisungen 112-114
zusammen mit GOTO 114
nullinitialisierte Variablen 883
NULL-Strings 81, 203-204
NULL-Werte
als Bindungsparameter 589
für Collections 921
in IF-Ausdrücken 96
für PL/SQL-Variablen, erkennen in C 985
Vergleich in Datensätzen 358
zuweisen zu Datensätzen 350
NUMBER-Datentyp
Ergebnis der Subtraktion zweier DATEs 316
Konvertieren in andere numerische Typen 262
unbeschränkte Werte 172
numerische Datentypen 241-248
BINARY_INTEGER 246
Definition von 165
Konvertierung zwischen 262
NUMBER 242-245
Runden von Werten 243-245
Subtypen 247
numerische FOR-Schleifen 122-124
allgemeine Syntax 122
Beispiele 123
nicht-triviale Inkremente 124
Regeln 122
numerische Funktionen 262-271
ABS 264
ACOS 265
ASIN 265
ATAN 265
ATAN2 266
BITAND 266
CEIL 267
COS 267
COSH 267
EXP 268
FLOOR 268
LN 268
LOG 268
MOD 268
POWER 269
ROUND 269
SIGN 270
SIN 270
SINH 270
SQRT 270
TAN 271
TANH 271
TRUNC 271
numerische Literale 82
NUMTODSINTERVAL-Funktion 305
Index
|
1035
NUMTOYMINTERVAL-Funktion 305
nur-lesbare Parameter 627
nur-lesbare Transaktionen 494
nur-schreibbare Parameter 627
NVARCHAR2- und NCHAR-Datentypen 201
NVARCHAR2-Datentyp
Landessprachen-Zeichensatz für 190
O
O’Reilly, PL/SQL-Reihe 23
O’Reilly-Website XVI
Zwischenspeichern von Daten in Datenstrukturen der Sitzung, Skripten 801
Object Request Broker (Aurora/ORB) 935
Objekt-basierte Zerlegung 933
Objekt-Berechtigungen auf Objekt-Typen 931
Objektbezeichner (OIDs) 75-77, 886
Eindeutigkeit von 927
Primärschlüssel- 886
systemeigene Werte für 886
Objekte
Bezeichner für (siehe Objektbezeichner)
Collections als Objekt-Typen 372
Collections von 389, 393
Datentypen (siehe Objekt-Typen)
große (LOBs) 166
Java
Namen in PL/SQL 165
NDS, verwenden in 590-592
PL/SQL, aktuell in der Datenbank 761
USER_OBJECT_SIZE-View 760
USER_OBJECTS-View 760
Vergleich 911-915
MAP- im Gegensatz zu ORDER-Methode
915
MAP-Methode, verwenden 912
ORDER-Methode, verwenden 912, 913
Vergleich auf Attributebene 912
objektorientierte Programmierung 872-934
Beschränkungen 932-934
einfachen Bibliothekskatalog modellieren
(Beispiel) 875-915
generische (ANY)-Datentypen 903-908
Methoden 878-885
Objekt referenzieren 895-903
Objektvergleich 911-915
persistente Objekte speichern, abrufen und
nutzen 884-892
1036 |
Index
Typen, Baum von 875-878
Typentwicklung 892-894
Unabhängigkeit von Objekt-Typen
908-911
Objekt-Typen und Objekt-Views, pflegen
929-932
Objekt-Views und 917
Oracles Objekt-Features 873-874
Objektreferenzen (REFs) 895-903
dereferenzieren 897
REFTOHEX-Funktion 899
Typhierarchien und 901
UTL_REF-Package 900-901
verwenden 895-899
ziellose 903
Objekt-Tabellen, Objekt-Views im Gegensatz zu
927
Objekt-Typen 456-465, 609, 876
ANY-Typen 461-465
Namensraum 877
Packages und 696
pflegen 929-932
Systemberechtigungen im Zusammenhang
mit 930
URI-Typen 460
Vererbung 20
XMLType 457-460
Objekt-Views 916-929
mit Collection-Attribut 919-922
INSTEAD OF-Trigger 925-927
Objekt-Tabellen im Gegensatz zu 927
pflegen 929-932
Subview 922
mit umgekehrter Beziehung 924
vorhandenes relationales System und 917
Vorteile 916
OCI (siehe Oracle Call Interface)
ODCIAggregate-Interface 646
öffentliche globale Daten 681, 843
öffentlicher Code 668
Booch-Diagramme für Package 669
globale öffentliche Datenstrukturen 681
öffnen
explizite Cursor 532
Package-Cursor 685
Öffnen von Cursorn 513
implizit 521
OF-Liste (FOR UPDATE-Klausel) 549
OIDs (siehe Objektbezeichner)
OLD-Pseudo-Datensätze 700
DML-Trigger, verwenden mit 704-706
ON DELETE CASCADE-Klausel, Angabe durch
Fremdschlüssel 722
oneversion.sql-Skript 23
Online Transaction Processing (OLTP)
Server-Hardware und 869
suspendierte Anweisungen und 753
onlyfair.sql Datei 546
ONLY-Schlüsselwort 892, 979
Open Source-Software in PL/SQL 26
OPEN_CURSOR-Funktion (DBMS_SQL-Package) 796
OPEN_CURSORS-Datenbank-Initialisierungsparameter, überschreiten 537
OPEN_SCREEN Literale 206
OPEN-Anweisungen
für Cursor-Variablen 557
für explizite Cursor 532
mit Parameter 541
OPEN FOR 15, 532, 575
Cursor-Variablen und 554
USING-Klausel 580
openclose.sql Datei 686
Operationsdirektiven, ermitteln, welche DMLAktion den aktuellen Trigger auslöste 706
Operatoren
Collection-Pseudofunktionen 409-417
CAST 414
Collection-Inhalt sortieren 416
MULTISET 414
TABLE 412
CURSOR 567
IN, Ausdrucksvergleiche und 206
IS DANGLING 903
IS OF 891
TABLE 186
UNION 185
Vergleichs-, in STANDARD-Package 822
Verkettungs- (||) 212
Zuweisungs= (in Java) 943
optimieren
PL/SQL (siehe Performance)
SQL 786
options-Tabelle (JAVA$OPTIONS) 954
OR REPLACE OPTION 48
ORA_GRANTEE-Funktion 731
ORA_IS_ALTER_COLUMN-Funktion 729, 731
ORA_IS_DROP_COLUMN-Funktion 731
ORA_IS_SERVERERROR-Funktion 736, 738
Fehlernummer beim Aufruf angeben 738
ORA_NAME_LIST_T-Datentyp 728
ORA_PRIVILEGE_LIST-Funktion 731
ORA_SERVER_ERROR-Funktion 736
ORA_SPACE_ERROR_INFO-Funktion 750
Oracle
Abfragen und Berichts-Packages, Beispiele
788
Advanced Queuing (AQ) 174
Dokumentation 24
FAQ-Website 26
Fehlernummern 738
Globalization Support Guide 253
Java und 935-937
Beispiel, Zugriff auf Java aus PL/SQL
941-947
Berechtigungen für Java-Entwicklung und
-Ausführung 938
DBMS_JAVA-Package, verwenden 953-958
geladene Java-Elemente, untersuchen 952
Java installieren 937
Java-Code erstellen und kompilieren 938
Java-Namensraum in Oracle 951
JDeveloper 936
Komponenten und Befehle für Java 936
Zugriff auf Java-Klasse-Methoden 936
PL/SQL Server Pages (PSP) 62
PL/SQL-Dokumentation
Obergrenzen für Programmgröße 818
Versionen
mehrere, verwenden 22
Oracle Call Interface (OCI) 59
Effizienz von Objektzugriff auf 916
REFs, verwenden 901
Routinen für externe Prozeduren 996
Oracle Forms
anonyme Blöcke 68
Bind-Variable, Datenabruf aus explizitem
Cursor 533
Rowids, verwenden 427
Index
|
1037
Oracle Net
konfigurieren, Unterstützung für externe Prozeduren 978-981
Listener-Konfiguration 978
Verbindungsbezeichner 34
Oracle Parallel Server (OPS) 870
Oracle Professional-Newsletter 25
Oracle Reports, anonyme Blöcke in 68
Oracle Server
PL/SQL-Speicherbelegung in 830-847
Cursor 833
Shared Pools, Probleme korrigieren
844-847
Speicherbelegung reduzieren 834-844
Oracle Technology Network (OTN) 25
Oracle8i 12-18
Aufrufer-Rechte 14
autonome Transaktionen 12
Gruppen-Binds und -Collects 15
Java aus PL/SQL aufrufen 17
Native Dynamic SQL 14
Trigger-Fähigkeiten 16
Oracle9i 18-22
COMPOSE-Funktion 212
Cursor-Ausdrücke 567-570
Datensatz-DML 18
Datentypen, neue und verbesserte 19
LOBs, Änderungen in 451
native Kompilierung von PL/SQL-Code 22
Objekt-Typen, vordefinierte 456-465
ANY-Typen 169, 461-465
SYS.XMLType 457-460
URI-Typen 460
PL/SQL Collections, Verbesserungen 21
String-Deklarationen 192-195
Tabellenfunktionen 18
Vererbung für Objekt-Typen 20
Oracle-Magazine 25
Oracle-Treiber, DBD::Oracle 61
ORB (Object Request Broker) 935
ORDER…BY-Klausel 660
ORDER-Methode, Objektvergleich mit 912, 913
MAP-Methode im Gegensatz zu 915
OUT-Bindungsparameter 587
OUT-Modus, Parameter 627, 628
Java-Wrapper und 960
1038 |
Index
P
Package-Daten
SQL-Zugriff minimieren 800-802
Zustand bewahren 842
Packages 609, 663-696
anonyme Blöcke und Toplevel-Prozeduren im
Gegensatz zu 807
Arbeiten mit Package-Daten 679-689
Cursor 681-686
global in einer Oracle-Sitzung 680
serialisierbare 686-689
Beispiel 664-667
Spezifikation 665
Datensätze aus 356
DBMS_JAVA 953-958
DBMS_JOB 63
DBMS_PROFILER 787
DBMS_RESUMABLE 751-752
DBMS_ROWID 425
DBMS_SQL 510
Vermeiden überflüssiger Code-Ausführung
796
DBMS_TRACE 789-793
DBMS_TYPES 462, 904
DEBUG_EXTPROC 999
Deklarieren expliziter Cursor in 529-531
Gründe 530
Funktionen und Prozeduren, definiert als autonome Transaktionen 495
generisches GROUP BY 583
globale Variablen in 73
Gründe für die Nutzung 663
im Arbeitsspeicher halten 846
Informationen verbergen 668
Initialisierung von 669
löschen 53
NDS-Package 601
Objekt-Typen und 696
öffentlicher und privater Code 668
Booch-Diagramm 669
Regeln für den Aufruf von Elementen 678
Regeln für Erstellung 670-678
Initialisierung 674-678
Package-Rumpf 672
Package-Spezifikation 671
Rumpf 669
Sitzungspersistenz 669
Spezifikation 668
(siehe auch Spezifikation für Package)
STANDARD, für Zeichnen von Abhängigkeiten 820
Synonyme für 53
UriFactory 461
UTL_REF 900-901
validate standards 763
wann verwenden 689-695
Hartcodieren von Literalen, vermeiden 689,
692
Kapselung von Datenbearbeitung 689, 690
Verbesserung von Built-in Features 689,
693
Zusammenfassung logisch verwandter
Funktionalität 689, 694
Zwischenspeichern statischer
Sitzungsdaten 689, 695
Parallelausführung von Abfragen 19
Parallelausführung, aktivieren einer Funktion für
658-660
Parallelverarbeitung (Oracle Parallel Server) 870
Parameter 622-634
Aktual- und Formal- 623
Zuordnen 624
Bindungs- 573, 577
Modi 587
CHAR 207
Cursor 539-542
Cursor öffnen mit 541
Geltungsbereich 541
Generalisieren von Cursorn mit 540
Modi 542
Standardwerte 542
CURSOR_SHARING 838
Cursor-Variablen, übergeben als 565, 566
Cursor-Variablenparameter, Modus einstellen
566
definieren 622
external_parameter_map 985
Funktionen ohne 619
Funktionsaufruf in SQL 645
Höchstzahl für Prozeduren oder Funktionen
818
Modi 626-630
IN OUT-Modus 629
IN-Modus 627
OUT-Modus 628
NOCOPY-Hinweis für Modus 630-632
Standardwerte 633
Übergabe als Referenz 990
Übergabe von Datensätzen 350
von überladenen Modulen 643
USER_ARGUMENTS-View 760
zuordnen für externe Prozeduren 985-994
PARAMETERS-Klausel 988-994
Parameter in 990-994
Parser für SQL 811
PARTITION... BY-Klausel 660
P-Debugging 808
perfect_triangles.sp-Datei 767
Performance
analysieren für PL/SQL-Code 787-789
Anwendungs-, verbessern durch Zwischenspeichern statischer Sitzungsdaten 689, 695
Aufrufer-Rechte und 866
Debugging schreiben und 786
Hardware für PL/SQL, Auswirkungen
868-870
Einzelprozessor 868
geclusterte 870
symmetrische Mehrprozessor (SMP) 869
Konvertierungen zwischen numerischen Typen und 262
objektorientierte Programmierung und 934
PLS_INTEGER-Datentyp für Arithmetik 246
SQL-Semantik für LOBs 454
verbessern für PL/SQL Anwendungen
793-803
BULK COLLECT und FORALL,
verwenden 802
vermeiden unnötiger Code-Ausführung
793-798
Zuhören können 798-800
Zwischenspeichern von Daten auf PackageEbene 800-802
Views und 916
Performance-Features, PL/SQL-spezifische 787
Perl, aufrufen aus PL/SQL 61
persistente Objekte 884-892
speichern, abrufen, und verwenden
abrufen mit VALUE-Funktion 887-889
TREAT-Funktion 890-892
Persistenz, Sitzungs- 669, 674
PGA (siehe Program Global Area)
Index
|
1039
Pipeline-Funktionen 19, 651
erstellen 653
transformative 654-658
PL/SQL
Anweisungen 8
aufrufen
serverseitiges, aus clientseitigen
Programmen 56
aufrufen aus anderen Sprachen 58-62
C, mit Pro*C 59
Java, mit JDBC 60
Perl, mit Perl DBI und DBD::Oracle 61
Clientseite (siehe clientseitiges PL/SQL)
Compiler 808
C-Schnittstelle, Datentypen und 988
Definition von 3
Features in Oracle8i 12-18
Aufrufer-Rechte 14
autonome Transaktionen 12
Gruppen-Binds und -Collects 15
Java aus PL/SQL aufrufen 17
Native Dynamic SQL 14
Trigger-Fähigkeiten 16
Features in Oracle9i 18-22
Datensatz-DML 18
Datentypen, neue und verbesserte 19
native Kompilierung von PL/SQL-Code 22
PL/SQL-Collections, Verbesserungen 21
Tabellenfunktionen 18
Vererbung für Objekt-Typen 20
Fehlerbehandlung 9
Geschichte 4-7
Grundlagen
Blöcke 64
Zeichensätze 74
Java aufrufen aus
Datentypen zuordnen 960
Exception-Handling 963-965
Java veröffentlichen und verwenden
Aufrufspezifikationen 958
Kontextwechsel zwischen SQL und 482
Probleme mit 484
Laufzeitumgebung 809
lexikalische Einheiten
Bezeichner 75-77
Kommentare 83
Literale 80-82
1040 |
Index
mehrere Versionen, arbeiten mit 22
native Datentypen 421
Programmausführung aus SQL*Plus 37,
809-815
Programme zwischen Client und Server verschieben 56
Programmgröße, Obergrenzen 818
Ressourcen für Entwickler 23
andere Printmedien 24
O’Reilly-Bücher 23
Websites 25
Serverseite (siehe serverseitiges PL/SQL)
serverseitiges, physikalische Speicherung von
815-817
SQL-Parser 812
Tips für Entwickler 27-30
Übertragung von Daten zwischen Anwendung und Server 403-405
Versionen von 11
PL/SQL Developer 27, 780
PL/SQL Server Pages (PSP) 62, 817
PL/SQL-Pipeline 25
PL/SQL-Variable mit Prozedurname qualifizieren 518
Platzhalter (mehrere), in dynamischem SQL oder
PL/SQL 588
PLNet.org 26
PLS_INTEGER-Datentyp 246
konvertieren in andere numerische Typen 262
PLSQL_TRACE_VERSION-Prozedur 790
Polymorphismus 640
portierbarer Pcode 809
Portierbarkeit 5
positionelle Notation
Aktual- und Formalparameter zuordnen 624
Assoziationsoperator (=>) 75
Positionen in Strings 195
positive Stellen 244
POSITIVE-Datentyp 167, 248
POWER-Funktion 269
PR (Zahlenformatelement) 249
verwenden bei Konvertierung von Zahl in Zeichen 258
Pragmas 85
AUTONOMOUS TRANSACTION 716
EXCEPTION_INIT 136, 140-142
RESTRICT_REFERENCES 646
Oracle8i und früher 649-651
SERIALLY_REUSABLE 687
Primärschlüssel, Objektbezeichner basierend auf
886
print()-Methode 876, 880
für Objekt-Typ 921
PRINT-Befehl (SQL*Plus) 41
PRIOR und NEXT-Methoden 373, 380
private globale Daten 843
privater Code 668
Booch-Diagramme für Package 669
Pro*C 59
proc-Programm 59
Program Global Area (PGA) 163
Collections, erstellen als Datenbanktabellen
390
Daten darin nachschlagen 800
Inhalt 831
PROGRAM_ERROR-Exception 144
Programm-Abhängigkeiten (siehe Abhängigkeiten)
Programm-Aufrufzähler, autonome Transaktion
als 497
Programmdaten 163-187
deklarieren 170-178
Konstanten 171
Variablen 170
verankerte Deklarationen 173-178
Namen 164-165
Programme
Debugging 777-785
Falsche Techniken 778
Strategien 780-785
gespeicherte
ausführen 50
erstellen 47-50
löschen 53
Rechte und Synonyme für 52
Verbergen von Quellcode 54
zeigen 51
Größe für PL/SQL-Programme, Obergrenzen
818
PL/SQL
geparste Darstellungen in SGA Shared Pool
831
testen 84, 758, 769-777
schlechte Techniken 771-777
schlechte Techniken, Gründe 770
Tuning 785-793
Algorithmen, Tuning 786
Analysieren der Code-Performance
787-789
Ausführungsprofil analysieren 786
beste Programmierverfahren und Standards 786
PL/SQL-spezifische Performance-Features
787
SQL optimieren 786
Verfolgung der Code-Ausführung 789-793
Vermeidung unnötiger Code-Ausführung
793-798
Zugriff auf Code und Daten in SGA 786
Verbessern der Performance von (siehe Programme, Tuning)
zwischen Client und Server verschieben 56
programmiererdefinierte Datensätze 347
deklarieren 346
deklarieren mit TYPE-Anweisung 347
programmiererdefinierte Exceptions 136
anonyme, Geltungsbereich 145
benannte, Geltungsbereich 145
Deklarationen, Beispiele 138
programmiererdefinierte Subtypen 178
Programmiersprachen
PL/SQL aus anderen aufrufen 58-62
C, mit Pro*C 59
Java, mit JDBC 60
Perl, mit Perl DBI und DBD::Oracle 61
streng typisierte 165
Propagation von Exceptions 137, 155-157
Prozeduren 609, 610-613
Abschneiden von Views oder Tabellen (truncobj) 586
allgemeines Format von 610
aufrufen 612
Collection 373
DELETE 373
EXTEND 373
TRIM 373
DBMS_JAVA-Package
Compiler-Optionen, abrufen und setzen
954
LONGNAME 954
Quellcode, Ressourcen und Klassen
exportieren 956
SET_OUTPUT 955, 964
Index
|
1041
definiert als autonome Transaktionen 495
deklarieren in Package-Spezifikation 671
END-Label 613
execDDL 595
externe (siehe externe Prozeduren)
FREMOVE, in UTL_FILE-Package 966
generisches GROUP BY 581
Package für 583
gespeicherte
ausführen 50, 812, 813
erstellen 47-50
zeigen 51
Höchstzahl der Übergabeparameter 818
im Arbeitsspeicher halten 846
Köpfe 69, 612
lokale 634
Öffnen und Schließen von Package-Cursorn
685
Package-, Vorteile 664
Parameter von (siehe Parameter)
RAISE_APPLICATION_ERROR 57, 137, 148,
646
RETURN-Anweisungen in 613
Rumpf von 612
selbständige
einhüllen 766
ohne Exception-Abschnitt 764
showcol 577, 580
Synonyme für 53
Toplevel-, Packages im Gegensatz zu 807
Übergeben von assoziativen Arrays als Parameter 402
Übergeben von Cursor-Variablen als Parameter 565
Übergeben von Cursor-Variablen an 555
überladen (siehe Module, überladen)
USER_ARGUMENTS-View 760
Pseudo-Anweisung (siehe Pragmas)
Pseudo-Collections,
SQL%BULK_EXCEPTIONS 489
Pseudo-Datensätze
Feinabstimmung, Trigger-Ausführung mit
712
NEW 699
in DML-Trigger, Beispiel 702
NEW und OLD, Verwendung mit DML-Trigger 704-706
OLD 700
1042 |
Index
Pseudofunktionen, Collection 409-417
CAST 414
Collection-Inhalt sortieren 416
MULTISET 414
TABLE 412
Pseudo-GUI-Version von SQL*Plus
ausführen 32
starten 35
Pseudo-Spalte (ROWID) 424
PSP (PL/SQL Server Pages) 62
PUBLIC-Berechtigungen 52
Publish/Subscribe-Fähigkeiten von Oracle8i 16
PUT_LINE-Funktion, DBMS_OUTPUT-Package 51
Boolean-Typen, behandeln 105
Q
qualifizierte Bezeichner 72
Modulnamen 73
qualifizierte Namen 464
Quellcode
anzeigen und durchsuchen 762
Objekte des aktuellen Benutzers 762
Debugger für 26, 780
exportieren aus Schema 956
gespeicherter
anzeigen 52
schützen 764
verbergen 54
Größe von 816
mit wrap schützen 765
unnötiger, suchen 794
USER_SOURCE-View 760
wiederherstellen für Programme 816
Quest
IDEs, TOAD und SQL Navigator 780
Pipelines PL/SQL Archive 824
R
RAISE_APPLICATION_ERROR-Prozedur 57,
137, 148
Aufrufen aus gespeicherten Funktionen in
SQL 646
RAW-Datentyp 168, 423
AQ-Message-IDs 174
Konvertieren in BLOB 456
Konvertieren von BLOB in 456
RAWTOHEX-Funktion 186
RDBMS 5
read-committed-Isolationsebene 494
READ-Funktion 226
Reads No Database State (RNDS) 649
Reads No Package State (RNPS) 649
Real Application Clusters (RAC) 870
Rechner, generische Funktion für 600
reelle Zahlen 82, 167
REF CURSOR-Datentyp 168, 553
in Datensatzfeldern 348
deklarieren für Mehrzeilen-Abfrage 577
Eingabeparameter für parallel ausgeführte
Funktionen 659
identifizieren als Cursor-Variablenparameter
565
Regeln für Zeilentyp-Abgleich zur Kompilierungszeit 562
Regeln für Zeilentyp-Abgleich zur Laufzeit
562
ROWTYPE_MISMATCH-Exception 559
SELECT-Liste, Kompatibilität mit 558
(siehe auch Cursor-Variablen)
REF CURSOR-Ergebnismenge, SELECT-Anweisung umwandeln in 510
referenced by-Informationen für clientseitige
PL/SQL Bibliotheken 827
REFERENCING-Klausel, Namen von PseudoDatensätzen in Trigger ändern 705
Referenzen
in benannten Exceptions 139
auf Elemente geschachtelter Tabellen von
Skalaren 411
mit Block-Label klären 86
in NEW- und OLD-Strukturen in anonymem
Block für trigger 705
auf Package-Datensätze 356
auf Package-Elemente 679
auf Package-Rumpf in clientseitiger Bibliothek
827
in undefinierten Zeilen 388
referenzieren, indirekt 599
REFs (Objektreferenzen) 895-903
dereferenzieren 897
physikalische im Gegensatz zu virtuellen,
Speicherbarkeit von 928
REFTOHEX-Funktion 899
Typhierarchien und 901
UTL_REF-Package 900-901
verwenden 895-899
ziellose 903
REFTOHEX-Funktion 899
rekompilieren
minimieren mit verborgener Abfragedefinition 531
Package-Rümpfe 817
ungültige Programme
automatisch 824
manuell 823
mit Skript 824
relationale (<= und >=) Operatoren 75
relationale Systeme, Objekt-Views und 917
REM-Kommentare 40
Remote-Abhängigkeiten 828-830
Remote-Adreßzeichen (@) 74
Remote-Aufrufmodell, Beschränkungen von 854
REPEAT UNTIL-Schleifen, emulieren mit einfachen Schleifen 120
REPLACE-Funktion 208, 224-226
reservierte Wörter 77
Schlüsselwörter 77
vermeiden in Bezeichnern 78
RESET_COMPILER_OPTION-Prozedur 954
Ressourcen, exportieren aus Schema 956
Ressourcenmanagement, suspendierte Anweisungen und 753
RESTRICT_REFERENCES-Pragma 85, 646
Oracle8i und früher 649-651
RESUMABLE System-Recht 747
Retry-Zähler, autonome Transaktion als 497
RETURN SELF als RESULT-Klausel 881
RETURN-Anweisungen
für Funktionen 620
als letzte ausführbare Anweisung 621
mehrere RETURNs 621
in Prozeduren 613
RETURN-Datentyp 616
RETURNING INTO-Anweisung, mit BULK
COLLECT 543
RETURNING-Klausel
Bindungsparameter-Modi und 587
Datensätze, verwenden mit 480
in FORALL-Anweisung 486
verwenden mit BULK COLLECT 546-548
Index
|
1043
RETURN-Klausel
Datentyp-Strukturen in 530
Deklarieren expliziter Cursor mit 529
hinzufügen in Cursor-Definitionen 682
RETURN-Schlüsselwort 69
REVERSE-Schlüsselwort 123
RN oder rn (Römische Ziffern) in Zahlenformatmodell 249
RNDS (Reads No Database State) 649
RNPS Reads No Package State 649
ROLLBACK-Anweisungen 491, 492, 493, 550
ROLLBACK TO SAVEPOINT-Anweisung
491
ROLLBACK TO-Anweisung 492
Rollbacks
in Datenbank-Trigger, definiert als autonome
Transaktionen 497
mit FORALL-Anweisungen 488
TRANSACTION_BACKED_OUT-Exception 144
Rollback-Segment, einstellen 494
Rollen
Aufrufer-Rechte und 866
Ausführungrechte erteilen 52
Definierer-Rechte und 861
Java-Sicherheit, in Oracle8i 938
ROUND-Funktion 264, 269
Runden von Datum 335-339
%ROWCOUNT, Cursor-Attribut 514, 516
referenzieren für Cursor-Variablen 555
Rückgabewerte von BULK COLLECT 538
ROWID Pseudo-Spalte in NEW- und OLDPseudo-Datensätze 705
ROWID-Datentyp 168, 423
Umwandlung von UROWID in 184
verwenden 426-429
Zugriff auf 424
ROWIDTOCHAR-Funktion 187
ROWTYPE_MISMATCH-Exception 559-561
%ROWTYPE-Attribut
Cursor-basierte Datensatzdeklarationen 346
Deklaration Tabellen-basierter Datensätze
345
Package-Cursor und 682
programmiererdefinierte Datensatzdeklarationen und 349
verankern in Cursorn und Tabellen 175
1044 |
Index
RPAD-Funktion 208
RR-Element in Datumsformatmodell 297
RTRIM-Funktion 208, 227
rückwärts suchen mit INSTR-Funktion 216
Rumpf einer Funktion 620
Rumpf einer Prozedur 612
Rumpf einer Schleife 117
Rumpf eines Cursors 531
Rumpf eines Packages 664, 667, 669
Abhängigkeiten, verfolgen 820
Beispiel-Implementierung 673
Deklarieren von Cursorn in 682
DIANA für, wird nicht gespeichert 817
einhüllen 766
employee_pkg (Beispiel) 667
erstellen, Regeln für 672
runddl-Prozedur 14
Runden von Zahlen 243-245
Funktionen 264
INTERVAL YEAR TO MONTH-Datentyp
283
bei Konvertierung von Zahlen in Strings 257
negative Werte für Monate 330
S
S (Sign) Präfix in Zahlenformatmodell 249
SAVE-Exceptions-Klausel, verwenden mit
FORALL 489
SAVEPOINT-Anweisung 491, 493
Savepoints
COMMIT-Anweisungen und 492
Geltungsbereich 493
Zurückrollen bis zu einem Savepoint 492
Schachteln von Collections in Collections
394-398
Schema-Ereignisse, Trigger dafür definieren 17
Schema-Name für benutzerdefinierte ObjektTypen 464
Schleifen 8, 115-133
abschließen mit Label 128
Cursor-FOR 125-127
Beispiele 126
einfache 116, 118-120
abschließen mit EXIT und EXIT WHENAnweisungen 118
Gründe für Nutzung 118
REPEAT UNTIL-Schleifen emulieren 120
verlassen 9
FOR- 116
GOTO-Anweisungen und 111
Label für 127
numerische FOR- 122-124
nicht-triviale Inkremente 124
prüfen auf unnötige Code-Ausführung 794,
794-797
schreiben, Tips 129-133
für Schleifenausführung, Informationen
besorgen 131
Namen für Schleifenindizes 129
richtig abschließen 130
SQL-Anweisungen als Schleifen 132
Struktur von 117
Typen 115
WHILE- 116, 120
Abschluß von 121
Gründe für 121
Schleifenindizes
Namen 129
numerische FOR-Schleifen, Regeln für 122
Schließen von Cursorn 834
explizite Cursor 535
implizite Cursor 521
Package-Cursor 685
Sitzung, alle schließen 834
Schlüsselwörter 77
ANY 659, 980
AS 9
BEGIN 8
BULK 308
COMMENT 491
CONSTANT 171
CONSTRUCTOR-Funktion 881
DATE 294
ELSE 93
ELSIF 99
END 67, 105, 613, 617
END IF 93
Leerraum zwischen 99
erstellen aus Zeichensätzen 74
EXCEPTION 10, 138, 150
in GOTO-Anweisungen 109
in Bezeichnern, Whitespace und 80
IS 9
NOT FINAL 876
NOWAIT 495
NUMBER 242
ONLY 892, 979
PRAGMA 85
RETURN 69
REVERSE 123
SELF 882
THE 410
THEN 93
TIMESTAMP 294
UNDER 878
vermeiden in Bezeichnern 79
WHILE 116
WRAPPED 766
schrittweise Verfeinerung (Top-down-Design) 28
schützen gespeicherten Codes 758, 764
schwacher REF CURSOR 168, 557
(siehe auch Cursor-Variablen; REF CURSORDatentyp)
sehr lange Strings (LONGs) 166
Sekunden, Zeiträume definieren 279
selbständige Arbeitseinheiten (Cartridges) 497
selbständige benutzerdefinierte Typen in clientseitigem PL/SQL 852
selbständige Funktionen und Prozeduren, einhüllen 766
SELECT-Anweisungen
in Cursor-FOR-Schleifen 125
Cursor, verbinden mit 510
Cursor-Ausdrücke in 570
explizite Cursor-Version von 527-542
FOR UPDATE-Klausel 532
implizite Cursor-Version von 520
Fehlerbehandlung 522-524
Öffnen von Cursor-Variablen 557
Rowid für eine Zeile in einer ROWID-Variable 425
als Schleifen 132
SELECT FOR UPDATE 512, 548-553
Aufheben von Sperren mit COMMIT 550
explizite Cursor schließen 536
WHERE CURRENT OF-Klausel 551-553
SELECT INTO
BULK COLLECT, verwenden mit 543
Collections initialisieren 385
als implizite Cursor 521
TOO_MANY_ROWS-Exception 144
Index
|
1045
SELECT…BULK COLLECT, FORALL-Anweisungen und 543
Select-Listen 517
umwandeln in REF CURSOR-Ergebnismenge
510
WHERE-Klauseln 518
Select-Listen 517
Cursor-Ausdrücke in 570
SELF-Schlüsselwort 882
Semikolon (siehe ; unter Symbole)
sequentielle assoziative Arrays 398-402
sequentielle Steuerungsanweisungen, GOTO
108-111
Sequenzen
im Arbeitsspeicher halten 846
serialisierbare Packages 686-689
serializable-Isolationsebene 494
SERIALLY_REUSABLE-Pragma 85, 687
Server
PL/SQL-Server-Integration 403-405
PL/SQL-Speicherbelegung in 830-847
Cursor 833
Shared Pools, Probleme korrigieren
844-847
Speicherbelegung reduzieren 834-844
Zeichensätze für 191
SERVERERROR-Trigger 735-740
ungültiger, Auswirkungen 740
Server-Hardware für PL/SQL 868-870
Einzelprozessor 868
geclusterte 870
symmetrische Mehrprozessor (SMP) 869
SERVEROUTPUT-Befehl (SQL*Plus) 37
serverseitiges PL/SQL
Abhängigkeiten 819-826
ungültige Programme, Gültigkeit
wiederherstellen 823-826
aufrufen aus clientseitigen Programmen 56
konventionelle oder native Kompilierung für
807
physikalische Speicherung von 815-817
Speicherorte von Code und Metadaten 815
Sitzungen 809
Verarbeitung 847-850
kompilieren anonymer Blöcke 847
kompilieren gespeicherter Objekte 848
PL/SQL ausführen 849
1046 |
Index
verlagern in Client 56
(siehe auch clientseitiges PL/SQL)
SET ECHO ON-Befehl (SQL*Plus) 48
SET TRANSACTION-Anweisungen 491, 493
SET_COMPILER_OPTION-Prozedur 954
SET_OUTPUT-Prozedur 955, 964
SET_PLSQL_TRACE-Programm 790
SET-Befehl (SQL*Plus) 40
SGA (siehe System Global Area)
Shared Dynamically Linked Library (DLL) 976
Shared Pools 830
Speicherbelegungsprobleme korrigieren
844-847
Shared Server 831
SHARED_POOL-Package, KEEP-Prozedur 846
SHOW ERROR-Befehl (SQL*Plus) 49, 760
ObjektKategorien für 50
showcol-Prozedur 580
SHUTDOWN-Trigger 734
ungültiger, Auswirkungen 740
Sicherheit
externe Prozeduren und 978
externe Prozedur-Listener, Konfiguration 980
Java, in Oracle8i 938
Sichtbarkeit von Variablen 71
7-Bit-ASCII-Zeichensatz 188
Signaturen für Remote-Programme 828
SIGN-Funktion 270
SIN-Funktion 270
Single-Byte-Zeichen
Konvertieren in Multibyte 208
Konvertieren von Multibyte-Zeichen in 209
Single-Byte-Zeichensätze 189
SINH-Funktion 270
Sitzungen 809
Package-Datenstrukturen als globale Variablen 680
Schattenprozeß auf Datenbank-Server 831
Zwischenspeichern statischer Daten 676
Anwendungs-Performance, verbessern 689,
695
Sitzungspersistenz 669, 674
skalare Datentypen
Konvertierung, ersetzen mit CAST 184
Programmdaten 163
in Tabellen 365
vordefinierte 165
Skalar-Verankerung 173
Skalarwerte
in CASE-Ausdruck- und Ergebniselementen
101
geschachtelte Tabelle von, Elemente referenzieren 411
Objekt-Attribute 912
Skripten
anonyme Blöcke in 69
atleastone.sql 800
ausführen in SQL*Plus 38
autontrigger.sql 506
autontrigger2.sq 507
dbgextp.sql 999
dbmsany.sql-Skript 462
DML-Trigger 700
psobj.sql 761
rekompilieren, ungültige Programme 824
tmr81.ot und plvtmr.pkg 787
Zwischenspeichern von Daten in Datenstrukturen der Sitzung 801
Skript-Inhalt wiedergeben 48
SMP (Symmetrischer Mehrprozessor) ServerHardware 869
Solaris
externe Prozedur, Debugging 999
externe Prozedur-Listener, Umgebungsvariablen 980
Sommerzeit 293
sortieren
Collection-Inhalt mit Pseudo-Funktionen 416
Objekte in SQL 883
Strings
GREATEST-Funktion 208, 214
LEAST-Funktion 220
Sortierreihenfolge in Zeichensätzen 197
SOUNDEX-Funktion 208, 228
Spalten
Abruf mehrerer Spalten mit BULK COLLECT
545
anzeigen mit showcol-Prozedur 577
CLOBs, speichern in 199
Collections als Datentypen für 371
Ermitteln, welche mit ALTER TABLE geändert wurde 729
geschachtelte Tabellen 17, 363
Konvertieren von Variablen in 205
Löschversuche ermitteln 730
Synchronisierung mit 176
Werte in Variablen anderen Typs konvertieren 204
Spalten-Aliasnamen in expliziten Cursorn 534
spärlich besetzte Collections 362
Speicher
Belegung durch PL/SQL in Oracle Server
830-847
Cursor 833
Shared Pools, Probleme korrigieren
844-847
Speicherbelegung reduzieren 834-844
Packages, Nutzung von 687
und Prozeßarchitektur in Dedicated im Gegensatz zu Shared Server 832
separater Raum für externe Prozeduren 977
Speicherbelegung reduzieren 834-844
Bind-Variablen 837
große Collections in PL/SQL 839-842
Packages 839
Speicherlecks, Versäumnisse beim Schließen
expliziter Cursor 536
Speichern von
REFS, physikalische im Gegensatz zu virtuellen 928
serverseitiges PL/SQL 815-817
Speichertabelle 363
Sperren, aufheben mit COMMIT 550
Spezifikation für ein Package 664
Abhängigkeiten 820
Beispiel 672
Deklarieren von Cursorn in 682
einhüllen 766
Regeln für Erstellung 671
Spezifikation für Package 668
SPOOL-Befehl (SQL*Plus) 42
SQL 3
anonymer Block mit SQL, ausführen 811
Anweisungen
CASE-Ausdrücke in 107
EXECUTE IMMEDIATE 14
gemeinsam nutzen für geringere
Speicherbelegung 835-839
geparste Darstellungen in SGA Shared Pool
831
prüfen auf unnötige Code-Ausführung 794
als Schleifen 132
Index
|
1047
Aufrufen von Funktionen in 645-651
Erfordernisse 645
RESTRICT_REFERENCES-Pragma
(Oracle8i und früher) 649-651
Restriktionen für benutzerdefinierte 646
aufrufen, Java-Methode aus 962
Ausführen von Anweisungen in PL/SQL-Programmen 512
Ausführung von Anweisungen in SQL*Plus 36
Befehle, DDL-Trigger für 726
BULK COLLECT, verwenden mit 543
CALL-Anweisung 810
Collection-Pseudo-Funktionen 409-417
Cursor-Attribute für DML-Anweisungen 487
dynamisches 510
Definierer-Rechte und 863
(siehe auch dynamisches SQL; NDS)
EXISTSNODE-Funktion für XML 458
gespeicherte PL/SQL-Prozedur mit SQL, Ausführung 813
Gleichheitsvergleich für Objekte 912
implizite Cursor-Attribute 524-526
Kontextwechsel zwischen PL/SQL und 482
Probleme mit 484
LOBs (Large Objects) 451-456
Performance-Auswirkungen von 454
temporäre LOBs 453
Namenskonflikte mit PL/SQL, vermeiden 519
Native Dynamic SQL (NDS) 14
optimieren 786
PL/SQL-Integration 7
statisches im Gegensatz zu dynamischem 511
VALUE-Funktion 887-889
SQL Navigator 27, 780
SQL Station 780
SQL%BULK_EXCEPTIONS-Pseudo-Collection
489
SQL%FOUND, Cursor-Attribut 526
SQL%ISOPEN, Cursor-Attribut 526
SQL%NOT FOUND, Cursor-Attribut 526
SQL%ROWCOUNT, Cursor-Attribut 526
SQL*Plus 32-54
aktuelles Verzeichnis 41
Anweisungen bearbeiten 43
Ausführen gespeicherter Programme 50
Ausführen von SQL-Anweisungen 36
Ausführung von Skripten 38
Ausgabe in einer Datei speichern 42
1048 |
Index
benutzerdefinierte Umgebung, beim Starten
laden 44
Benutzereinstellungen 40
Bind-Variablen in anonymen Blöcken 837
DISCONNECT-Befehl 43
Fehlerbehandlung 45
gespeicherte Programme erstellen 47-50
gespeicherte Programme zeigen 51
löschen gespeicherter Programme 53
PL/SQL-Code-Ausführung, Probleme mit &Zeichen 207
PL/SQL-Programme, ausführen aus 37,
809-815
psobj.sql -Skript 761
Rechte und Synonyme für gespeicherte Programme 52
SERVEROUTPUT-Befehl 37
starten 33
Verbergen des Quellcodes von gespeicherten
Programmen 54
verlassen 42
Vorteile und Beschränkungen 46
SQL*Plus Worksheet 32
SQL-Anweisungen parsen 512
SQLCODE-Funktion 152
SQLERRM-Funktion 152
SQL-Parser 811
SQRT-Funktion 270
Standardkonstruktoren 368
STANDARD-Package
Bezeichner aus 77, 78
Zeichnen von Abhängigkeiten 820
Stapelverarbeitung
Verschlüsseln von Code 766
(siehe auch BULK COLLECT-Klausel)
starker REF CURSOR 168, 557
(siehe auch Cursor-Variablen; REF CURSORDatentyp)
start_position-Parameter (INSTR-Funktion) 216
START-Befehl 38
STARTUP-Trigger 734
ungültiger, Auswirkungen 740
statische Methoden 883
als Pseudokonstruktoren 884
SELF-Schlüsselwort und 882
Verbindung mit Java-Klassen 943
statischer Polymorphismus 640
statisches SQL 511
BULK COLLECT, verwenden mit 543
Stellen 243
mehr Stellen als Genauigkeit 244
in NUMBER-Variablendeklarationen 245
Steuerungsanweisungen 8, 91-114
CASE 100-105
GOTO 108-111
IF 91-99
NULL 112-114
STORAGE_ERROR-Exception 144
streng typisierte Sprachen 165
String-Erkennung, ersetzen mit ErsetzungsString 224
String-Klasse 969
String-Literale 80
mit Präfix N 190
Strings 188-240
Bindung im Gegensatz zu Verkettung 584
Collection-Indizes 406
Datentypen 198-203
CHAR 199-201
CHAR und NCHAR 198
NVARCHAR2 und NCHAR 201
Subtypen 202
VARCHAR2 198
Datum in String konvertieren 299-304
einfache Anführungszeichen in 81
Hexadezimal in RAW konvertieren 186
Indizes für assoziative Arrays 362
Konvertieren in Datum 273, 288-299
Konvertieren in Zahlen mit TO_NUMBERFunktion 250-254
Konvertieren in/aus Zahlen
CAST-Funktion 260
implizit 260
Konvertieren von Datum/Uhrzeit in und aus
Strings mit CAST und EXTRACT 310-312
Konvertieren zwischen Zeichensätzen 186
Konvertieren, Hexadezimal in RAW 186
Literale, einfache Anführungszeichen in 74
Probleme mit 203-207
Angeben von String-Konstanten 207
leere oder NULL-Strings 203-204
Mischen von CHAR und VARCHAR2Werten 204-207
Zeichen- 166
Zeichenfunktionen 208-238
INSTR-Funktionen 215-220
LENGTH-Funktionen 220-222
Liste 208
LOWER 222
LPAD 222
LTRIM 223
NLS-Funktionen 238-240
READ 226
REPLACE 224-226
RTRIM 227
SOUNDEX 228
SUBSTR-Funktionen 229-232
TO_CHAR 232
Zeichensätze 188-197
Datenbank im Gegensatz zu
Landessprache 190
String-Variablendeklarationen und
191-197
Typen 189
Strings auffüllen
LPAD-Funktion 208, 222
String-Vergleiche verschiedener Typen 205
String-Vergleiche ohne Leerzeichenauffüllung
205
Ausdrücke mit mehr als zwei Variablen oder
dem IN-Operator 206
Stunden, Zeiträume definieren 279
SUBSTR-Funktionen 195, 229-232
SUBSTR 208, 453, 771
TZ_OFFSET-Funktion, verwenden mit
329
SUBSTR2 208
SUBSTR4 208
SUBSTRB 195, 208
SUBSTRC 208
Subtypen
Bezeichner aus STANDARD-Package 78
erstellen in objektorientiertem Bibliothekskatalog-Modell 877
von numerischen Datentypen 247
Objekt-Subview 922
Objekt-Typ, UNDER-Recht 931
programmiererdefinierte 178
in STANDARD-Package 822
String 202
suspendierte Anweisungen als Trigger 698
Index
|
1049
suspendierte Anweisungen, AFTER SUSPENDTrigger 746-754
symbolische Logik von Programmiersprachen
782
Symmetrische Mehrprozessor (SMP)-ServerHardware 869
Synchronisierung mit Spalten 176
Synonyme für gespeicherte Programme 53
SYS_REFCURSOR-Datentyp 909
SYSDATE-Funktion 327
System Global Area (SGA)
Daten-Lookups minimieren 800
geparste Darstellungen von SQL-Anweisungen in Shared Pool 831
globaler Speicher für serialisierte Packages
688
Hintergrundprozesse in 830
Metadaten in Shared Pool zwischenspeichern
831
Shared Memory-Pool 830
Zugriff auf Code und Daten tunen 785
System-Berechtigungen für Objekt-Typen 930
systemeigene OIDs 886
Vorteile 886
System-Ereignisse
Definieren von Triggern als Reaktion auf 17
System-Exceptions 136
anonyme
Geltungsbereich 145
benannte 142
Geltungsbereich 145
benennen 141
System-Trigger, ungültige DDL-Operation in 749
SYSTIMESTAMP-Funktion 327
T
Tabellen
abschneiden, Prozedur 586
äußere oder umschließende 363
DUAL 811
geschachtelte 360
Definition in PL/SQL 364
gespeicherte Funktionen und 646
Index-organisierte Tabellen (IOTs) 424
innere oder eingeschlossene 363
mutierende Tabellen-Fehler 715-723
Speicher- 363
1050 |
Index
sperren 491, 494
Typ für assoziative Arrays definieren 364
Verankerung in 175
virtuelle
Cursor als Zeiger in 511
Konvertieren von Collections in 898
tabellenbasierte Datensätze
deklarieren 345
erstellen 345
Tabellenfunktionen 18, 651-660
aktivieren für Parallelausführung 658-660
aufrufen aus einer FROM-Klausel 651
Pipeline 651
erstellen 653
transformative 651, 654-658
TABLE-Funktion 186, 410, 898
TABLE-Pseudofunktion 410, 412, 413
Tage
NEXT_DAY-Funktion 341
Zeiträume definieren 279
TAN-Funktion 271
TANH-Funktion 271
TechNet 25
Testen von Programmen 608, 769-777
Java-Funktionen 943
schlechte Techniken 771-777
schlechte Techniken, Gründe 770
Text
anzeigen mit DBMS_OUTPUT in DDL-Trigger 725
Textdateien für Quellcode 762
Textminimum (TM)-Element, Zahlenformatmodell 249, 258
THE-Pseudofunktion 410
TABLE im Gegensatz zu 413
this-Schlüsselwort (Java) 882
thisuser.pkg, USER-Wert zwischenspeichern 801
thisuser.tst-Skript 801
TIMEOUT_ON_RESOURCE-Exception 144
TIMESTAMP WITH LOCAL TIME ZONEDatentyp 275
wann verwenden 278
TIMESTAMP WITH TIME ZONE-Datentyp
275
NEW_TIME-Funktion und 341
wann verwenden 278
TIMESTAMP-Datentypen 275
DATE mit CAST in TIMESTAMP konvertieren 320
Deklarieren von Variablen 277
einen vom anderen subtrahieren 316
implizite Konvertierung in DATE 314
Konvertierungsfunktionen für 290
Zeitzoneninformationen, hinzufügen 332
Timing von PL/SQL-Code 787
TM (Textminimum)-Element in Zahlenformatmodell 249, 258
TO_BLOB-Funktion 456
TO_CHAR-Funktion 208, 232, 248, 254-259
Konvertieren von Datums/Uhrzeitwerten in
Strings variabler Länge 300-304
Leerzeichen in Zahlen-zu-String-Konvertierung 258
Übergeben von NLS-Einstellungen an 259
verwenden mit einem Formatmodell 255
verwenden ohne Formatmaske 254
Zeitraum formatieren und 309
TO_CLOB-Funktion 456
TO_DATE-Funktion 273, 289
TO_DSINTERVAL-Funktion 306
TO_LOB-Funktion 456
TO_MULTI_BYTE-Funktion 208
TO_NCHAR-Funktion 240
TO_NCLOB-Funktion 456
TO_NUMBER-Funktion 248, 250-254
Übergeben von NLS-Einstellungen an 252
verwenden mit einem Formatmodell 251
verwenden ohne Formatmodell 251
To_RAW-Funktion 456
TO_SINGLE_BYTE-Funktion 209
TO_YMINTERVAL-Funktion 306
TOAD (Tool für Oracle Application Developers)
26
TOO_ MANY_ROWS-Exception 144
in SELECT-Anweisung für impliziten Cursor
522
Tools für PL/SQL-Entwickler 26
Top-down-Design 28
Toplevel-Prozeduren
anonyme Blöcke und Packages im Gegensatz
zu 807
PL/SQL Server Pages (PSP) 817
TRANSACTION_BACKED_OUT-Exception
144
Transaktionen 469-508
“ACID”-Prinzip 469
autonome 470, 495-508
Beispiele 502-508
Datenbank-Trigger als 716, 723
definieren 496
Regeln und Restriktionen 498-502
SERVERERROR-Trigger als 737
wann verwenden 497
autonome, in Oracle8i 12
DML in PL/SQL 470-481
Informationen aus DML-Anweisungen
zurückliefern 475
UPDATE-Anweisung 472
DML-Trigger, Teilnahme an 700
externe Prozeduren, volle Unterstützung für
977
Gruppen-DML mit FORALL-Anweisung
482-490
Rollback-Verhalten 488
Weitermachen nach Exceptions 489
Kommentare mit 491
PL/SQL-Anweisungen für 490-495
COMMIT 491
LOCK TABLE 494
ROLLBACK 492
SAVEPOINT 493
SET TRANSACTION 493
Transaktionsintegrität 6
transformative Funktionen 651
erstellen 654-658
transienter Typ, erstellen 907
TRANSLATE-Funktion 209
TREAT-Funktion 890-892
Trigger 697-757
AFTER 699, 700, 726, 733
AFTER INSERT 700
AFTER LOGON 735, 740
AFTER SERVERERROR 735-740
AFTER STARTUP 734, 740
AFTER SUSPEND 746-754
ABORT-Prozedur in
DBMS_RESUMABLE-Package 751-752
Beispiel 748-750
erstellen 750
mehrfache Auslösung in einer Anweisung
752
ungültige DDL-Operation in 749
Index
|
1051
BEFORE 699, 700, 726, 733
BEFORE INSERT 702, 713
BEFORE LOGOFF 735
BEFORE SHUTDOWN 734
Clientseite, anonyme Blöcke in 68
Datenbankereignis- 732-740
erstellen 733
ungültige, Auswirkungen von 740
DDL- 723-732
Attributfunktionen 726-728
Ereignisse und Attribute, Beispiele 728-732
erstellen 724-726
löschen 732
DDL-Ereignisse für 726
DML- 698-713
Beispiel 707
erstellen 701-707
Konzepte und Terminologie 699-701
mehrere desselben Typs 713-715
mutierende Tabellen-Fehler 715-723
Skripten für 700
Transaktion, Teilnahme an 700
Ereignisse mit zugehörigem Trigger-Code 697
im Arbeitsspeicher halten 846
INSTEAD OF- 698, 740-746, 922
erstellen 740-742
INSERT 742
UPDATE 744
pflegen 754-757
deaktivieren, aktivieren und löschen 754
Gültigkeit prüfen 756
Trigger betrachten 755
USER_TRIGGERS-View 760, 816
Trigger auf Anweisungsebene
mutierende Tabellen-Fehler, vermeiden 716
Trigger auf Zeilenebene 699
Restriktionen 716
WHEN-Klausel, verwenden mit 702
Trigger betrachten 755
Trigger validieren 756
TRIGGER_SOURCE-View 52
trigonometrische Arcusfunktionen 263
trigonometrische Funktionen 263
Trimmen
Zeichen rechts in Strings 227
TRIM-Prozedur 209, 373, 381
DELETE und, Anwendung auf VARRAYs 382
DELETE und, VARRAYs 375
1052 |
Index
TRUNC-Funktion 264, 271, 336-339
DATE-Werte, verwenden auf 315
Tu-nichts-Anweisung (NULL) 112
Tuning von PL/SQL-Programmen 759, 785-793
Algorithmen, Tuning 786
Analysieren der Performance von Code
787-789
Ausführungsprofil analysieren 786
beste Programmierverfahren und -Standards
786
Performance-Features, PL/SQL-spezifische
787
SQL optimieren 786
Verfolgung der Code-Ausführung 789-793
Vermeidung unnötiger Code-Ausführung
793-798
Zugriff auf Code und Daten in SGA 786
Zuhören können 798-800
TYPE ... IS ...-Syntax 364
TYPE RECORD-Anweisung
programmiererdefinierte Datensatzdeklarationen 346
TYPE-Anweisung 347
für Tabellen 364
%TYPE-Attribut
Datensatzfelder in Tabelle verlinken 349
Skalar-Verankerung 173
Typentwicklung 892-894
TZ_OFFSET-Funktion 329
U
U (Zahlenformatelement) für den Euro 249
U.S.-Dollar ($ Zahlenformatelement) 250
über den Namen, Aktual- und Formalparameter
zuordnen 625
Übergabe von Datensätzen
als Parameter in Parameterlisten 350
als Parameter in prozeduralen Schnittstellen
345
Übergabe von Parameterwerten
als Referenz 630, 990
als Wert 630
überladen
Funktionen 666
Module 639-643
Restriktionen 643
Unterstützung für verschiedene Datentypen
853
Vorteile 640
UCS-2 und UCS-4 196
UGA (siehe User Global Area)
Umgebungsvariablen
CLASSPATH, einstellen für Java-Compiler
937
für externe Prozedur-Listener 979
umschließende Tabellen 363
unbegrenzte Collections 361
unbehandelte Exceptions 137, 151
Propagation von 155-157
unbenannte (anonyme) Exceptions 137
unbenannte Konstanten (Literale) 172
unbeschränkte Datentypen 172
INTERVAL 324
Subtypen 179
unbeschränkte Deklarationen 623
UNDER-Recht 931
UNDER-Schlüsselwort 878
ungültige DDL-Operation in System-Trigger 749
ungültige Programme 821
bedingte Invalidierung von PL/SQL 825
Gültigkeit wiederherstellen 823-826
automatisch rekompilieren 824
manuell rekompilieren 823
mit Skript rekompilieren 824
Unicode 189
Debugging-Punkte und Code-Einheiten 195
Gleichheit von Strings 197
INSTR-Funktionen und 216
Konvertieren von Strings in 209
Länge von Strings in Anzahl der Zeichen 196
Strings mit COMPOSE-Funktionen normalisieren 211
UTF-16-Zeichensatz 190
AL16UTF16 (Oracle-Abkürzung für) 191
UTF-8-Zeichensatz 189
Website 196
Zeichen zählen mit LENGTHC-Funktion 222
zerlegte Zeichen, erkennen mit INSTRCFunktion 218
Zerlegung vorgefertigter Zeichen in Strings
213
uninitialisierte Variablen 883
UNION-Operator 185
Daten aus Datenbank-Tabelle und Collection
kombinieren 417
UNISTR-Funktion 209
Universal Resource Identifiers (siehe URI-Typen)
Universal Time (UTC) 275, 277
Zeitzonendarstellungen 292
universelle Zeilennummer (UROWID) 424
Unix
Debugging von externen Prozeduren 999
loadjava-Befehl, ausführen 948
Verzeichnis-Begrenzungszeichen 39
unkenntlicher Code, arbeiten mit 766
Unterdrücken von Leerzeilen in Strings 211
Upcasten zum generischen Element 879
UPDATE-Anweisungen 472
ausführen und speichern oder streichen ohne
Auswirkungen auf die Sitzungstransaktion
495
Datensätze, verwenden in 18
DML
Datensätze 479
Datensätze, verwenden mit RETURNINGKlausel 480
Restriktionen für Datensatz-basierte 481
als DML-Trigger 700
OLD- und NEW-Pseudo-Datensätze 705
THE-Unterabfrage als Ziel von 411
WHERE CURRENT OF-Klausel 551-553
(siehe auch SELECT-Anweisungen)
UPDATE-Trigger (INSTEAD OF) 744
UPPER-Funktion 209, 453
CLOB, anwenden auf 453
UriFactory-Package 461
URI-Typen 169, 460
UROWID-Datentyp 168, 423
Speichern von Rowids aus der Datenbank im
PL/SQL-Programm 425
Umwandlung von in ROWID 184
US7ASCII-Zeichensatz 74
User Global Area (UGA)
Inhalt 831
Package-Daten in 687
serverseitige Datenstrukturen im Zusammenhang mit Cursorn 833
für Shared Server-Verbindungen, separater
Speicherbereich für 846
Index
|
1053
USER_DEPENDENCIES-View 819
Herausfinden, welche lokalen Objekte durch
eine Programmänderung ungültig werden
816
Programme, die darin nicht erscheinen 821
USER_Fehler-View 50
Fehler beim Kompilieren gespeicherter Objekte 849
USER_OBJECT_SIZE-View 816
USER_OBJECTS-View 760
Liste von Programmen, zeigen 52
Prüfen des Ladens einer Java-Klasse 945
ungültige Objekte 816
USER_SOURCE-View 816
abfragen nach Quellcode gespeicherter Programme 52
DDL-Trigger und 728
Inhalt 762
unkenntlich gemachter Code 766
USER_STORED_SETTINGS-View, nativ kompilierte Programme 816
USER_TAB_PRIVS_MADE-View 52
USER_TRIGGERS-View 816
USER_-Views 759
USING NCHAR_CS-Klausel (CHR-Funktion)
211
USING-Klausel
Bindungsparameter
doppelte Platzhalter 588
mit dynamischem PL/SQL, Richtlinien für
587
für EXECUTE IMMEDIATE-Anweisung 573
in OPEN FOR-Anweisung 580
UTC (Coordinated Universal Time) 275, 277
Zeitzonendarstellungen 292
UTF-8-Zeichensatz 189
UTL_FILE-Package 357
Beschränkungen 966
verbesserte Version 966
UTL_REF-Package 900-901
utlcmd.sql-Package 972
utlcmd-Klasse 972
utlrp.sql (Rekompilierungsskript) 824
utlzip.sql-Package 971
utlzip-Klasse 971
utPLSQL (siehe Modultest)
1054 |
Index
V
V$OPEN_CURSOR-View 834
V$RESERVED_WORDS-View 79
V$TIMEZONE_NAMES-View 293, 329
NEW_TIME-Funktion und 340
validate standards-Package 763
VALUE_ERROR-Exception 144, 173
VALUE-Funktion, abrufen von Objekten aus
Datenbank 887-889
VARCHAR2-Datentyp 198
assoziative Arrays von 406-407
CLOBs, austauschbar verwenden 451-454
Datenbank-Zeichensatz für 190
Konvertieren von ROWID (Binärwert) in 187
mischen mit CHAR-Werten 204-207
VARCHAR-Subtyp 203
variable Breite, Zeichensätze 189
Oracle-Unterstützung für 431
String-Variablen und 192
UTF-8 190
variable Länge, Arrays (siehe VARRAYs)
variable Länge, RAW-Datentyp 168
variable Länge, Strings 198
Konvertieren von Datums/Uhrzeitwerten
300-304
NVARCHAR2 201
VARCHAR2-Datentyp
mischen mit CHAR-Werten 204
Variablen 163
Bind- 584-590
Beschränkungen 585
doppelte Platzhalter 588
einsetzen für lokale Programmvariablen
812
Parameter-Modi 587
Speicherbelegung reduzieren 837
Verkettung im Gegensatz zu 584
binden
Übergeben von NULL-Werten als
Bindungsparameter 589
Collection 367
initialisieren 382-387
Cursor- 509, 512, 553-567
Ähnlichkeiten zu statischen Cursorn 555
deklarieren 557
deklarieren von REF CURSOR-Typen 556
Gründe zur Benutzung 555
öffnen 557
OPEN FOR-Anweisung und 15
Datenabruf aus expliziten Cursorn 533
Datenbank-Spaltendaten in anderen Typ konvertieren 204
DEFINE- und Bind- 40
deklarieren 8, 170
deklarieren in Package-Spezifikation 671
eingeschränkte 172
Geltungsbereich 70
globale 73
Host-Variable (:)-Zeichen 74
konvertieren in Datenbank-Spaltenwerte 205
NOT NULL. Werte, angeben 172
NULL-, erkennen in C 985
Packagegespeicherte Funktionen und 646
Zustand pflegen 842
Package-Initialisierung und 674
Referenzen in, mit Block-Label klären 86
referenzieren in Cursorn 517-519
auf Remote-Server 854
Sichtbarkeit von 71
SQL*Plus, Ersetzungs-Feature deaktivieren
207
uninitialisierte 883
verankern
in einer Datenbankspalte 174
verankerte 173-178
Werte mit NDS holen 579
VARRAYs 419
CAST-Pseudofunktion für 414
Datenbank-PL/SQL-Integration 386
DELETE und TRIM, Anwendung auf 375, 382
Entfernen von Elementen mit TRIM 381
Ermitteln der Höchstzahl von Elementen 379
Initialisierung von 383
als Spaltendatentypen 372
Typ deklarieren 366-368
Vergleich mit geschachtelten Tabellen und assoziativen Arrays 418
Zuweisen eines Werts zu einer Zeile 388
V-Element in Zahlenformatmodell 249
Wert skalieren 256
verankerte Datentypen
Datensatz-Verankerung 173
Skalar-Verankerung 173
in Tabellen 365
verankerte Deklarationen 173-178, 348
in Cursorn und Tabellen 175
Normalisierung lokaler Variablen 176, 177
NOT NULL-Datentypen 178
Synchronisierung mit Datenbank-Spalten 176
Verbergen von Informationen 668
Kapselung von Datenbearbeitung 689, 690
Quellcode für gespeicherte Programme 54
Verbindungsbezeichner 34
Vererbung (Objekt-Typen) 20
Verfallsdatum von Konserven, berechnen
281-283
Verfolgung der Code-Ausführung mit
DBMS_TRACE
Programme in Package 790
Verfolgung der Code-Ausführung mit
DBMS_TRACE-Package 789-793
Vergleich
Collection-Typen 364, 915
Datensätze 357
Objekte 911-915
MAP- im Gegensatz zu ORDER-Methode,
915
ORDER-Methode, verwenden 912, 913
SQL-Gleichheitsvergleich 912
Vergleich auf Attributebene 912
Strings 197
mit gemischten CHAR- und VARCHAR2Werten 205
VARCHAR2-Werte in IF-Anweisung 204
Vergleichsmethoden 883
Vergleichsoperatoren 822
Verkettung von Methoden 885
Verkettung von Strings
Bindung im Gegensatz zu 584
CLOBs 453
Verkettungs-Operator (||) 74, 212
Veröffentlichen von Java-Methoden in PL/SQL
936, 958
Verschlüsselung, wrap-Programm 54
Versionen
clientseitiges PL/SQL 852-854
PL/SQL 11
Arbeiten mit mehreren 22
PLSQL_TRACE_VERSION-Prozedur 790
Index
|
1055
Views
abschneiden, Prozedur 586
gespeicherte Funktionen in SQL und 647
Objekt- 916-929
mit Collection-Attribut 919-922
INSTEAD OF-Trigger, Aktualisierung mit
925-927
pflegen 929-932
Subview 922
mit umgekehrter Beziehung 924
Vorteile 916
vorhandenes relationales System und 917
virtuelle Datenbanktabelle 413
virtuelle Denormalisierung 924
virtuelle Maschine, Java 935
virtuelle Maschine, PL/SQL 809
virtuelle REFs 922
Objekt-Views und 917
Speichern von 928
virtuelle Tabellen
Cursor als Zeiger in 511
dargestellt von Cursorn 533
Konvertieren von Collections in 898
vollqualifizierter Typname des aktuellen features-Objekts 464
vordefinierte Exceptions 10, 138, 822
PL/SQL 143
vordefinierte skalare und zusammengesetzte
Datentypen 165
vorgefertigte Zeichen 211
Zerlegung 213
Vorwärtsdeklarationen 644
vorzeichenbehaftete Integer 246
speichern in Binärformat 246
W
wahlfreie (nicht-sequentielle) Auffüllung von
assoziativen Arrays 399
Währungssymbole
Position, angeben in Zahlenformatmodell 249
Zahlenformatelemente für 250
Website zu diesem Buch XVI
Websites für PL/SQL-Programmierer 25
weich geschlossene Cursor 834
weiches Parsen von SQL 813
Wertausdrücke für Zeiträume 307-309
1056 |
Index
WHEN-Klauseln
benannte Exceptions abfangen 151
in CASE-Anweisungen 103
in CASE-Ausdrücke 107
CASE-Ausdrücke und 105
in DML-Triggern 700, 702, 711
aufrufen von Built-in-Funktionen 703
für EACH ROW, angeben vor 704
WHEN OTHERS-Klausel 151
SQLCODE, SQLERRM-Funktionen in 152
WHERE-Klauseln
Abrufen der Zeilenzahl, in Tabelle oder Schema 574
Cursor-Parameter und 539
REF-basierte Navigation in 897
in SELECT-Anweisungen
Referenzieren von Variablen 518
WHERE CURRENT OF CURSOR-Klausel
427
WHERE CURRENT OF-Klausel 551-553
WHILE-Schleifen 8, 116, 120
Abschluß von 121
Grenze und Rumpf von 117
Gründe für 121
Whitespace
Datenbank-zu-Variable-Konvertierung,
CHAR- und VARCHAR2-Werte 204
in Bezeichnern 80
in SQL*Plus 38
Leerzeilen in Strings, unterdrücken 211
übereinstimmend mit Quellcode für gemeinsame Nutzung von Anweisungen 835
in Zahlen-zu-String-Konvertierung 258
Widerruf von Berechtigungen 52
Wiederverwendbarkeit von Code 9, 608
Anwendungsbestandteile, autonome Transaktionen als 497
Windows-Systeme (siehe Microsoft-Betriebssysteme)
wissenschaftliche Notation 82
EEEE-Suffix in Zahlenformatmodell 249
WITH OBJECT IDENTIFIER-Klausel 923
WNDS (Writes No Database State) 649
WNPS (Writes No Package State) 649
Wochen in ISO-Daten 288
WORK-Schlüsselwort 491
WRAPPED-Schlüsselwort 766
Wrapper
PL/SQL für Java-Methoden 958
Datentypen, zuordnen 960
Regeln 960
PL/SQL, für Java-Klassen 946
Wrapper-Programme für Java-Code 936
wrap-Programm 54, 765
Writes No Database State (WNDS) 649
Writes No Package State (WNPS) 649
Wurzel-Datentypen, selbständige 877
X
X (Hexadezimalwerte) in Zahlenformatmodell 249
XDBUriType 460
xfile-Package 966, 968
Dateien bearbeiten als String-Listen oder geschachtelte Tabellen 970
Programme, die auf getDirContents-Methode
aufsetzen 970
XML (Extensible Markup Language)
Datentypen 169
XMLType 20, 457-460
Y
YMINTERVAL_UNCONSTRAINED-Datentyp 324
Z
Zahlen 241-271
Konvertieren in Zeichen mit TO_CHAR
254-259
gescheiterte Konvertierung 257
Konvertieren in/aus Strings
CAST-Funktion 260
implizit 260
Konvertieren von Strings in Zahlen mit
TO_NUMBER 250-254
Konvertieren, Zahlenformatmodell 248
numerische Datentypen (siehe numerische
Datentypen)
numerische Werte in Zeitraumsarithmetik
316
Runden
Datum 335-339
Zahlenformatmodell 248
$ (Dollarzeichen) 249
, (Gruppentrennzeichen) 249
. (Dezimalpunkt) in 249
9 signifikante Ziffern 249
C (Währungs)-Symbol 249
EEEE (wissenschaftliche Notation) 249
Hexadezimalwerte in 249
PR-Element, verwenden bei Konvertierung
von Zahl in Zeichen 258
S (Sign) Präfix 249
TM (Textminimum)-Präfix 249, 258
TO_NUMBER-Funktion, verwenden mit 251
U (Euro)-Symbol 249
verwenden mit TO_CHAR-Funktion 255
(siehe auch Datumsformatmodelle)
Zahlenliterale 80
Zählschleifen (siehe numerische FOR-Schleifen)
Zeichen
Konvertieren von Zahlen in 254-259
maximale Länge von VARCHAR2-String 198
Zeichendaten in PL/SQL, vordefinierte Datentypen für 166
Zeichenfunktionen 195
CHAR-Parameter und 207
GREATEST 214
INSTRB 215
INSTR-Funktionen 215-220
LEAST 220
LENGTH-Funktionen 220-222
Liste 208
LOWER 222
LPAD 222
LTRIM 223
NLS
NCHR 238
NLS_INITCAP 239
NLS_LOWER 239
NLS_UPPER 239
NLSSORT 240
TO_NCHAR 240
NLS- 238-240
READ 226
REPLACE 224-226
RTRIM 227
SOUNDEX 228
SUBSTR-Funktionen 229-232
TO_CHAR 232
Index
|
1057
Zeichensätze 74, 188-197
Datenbank im Gegensatz zu Landessprache
190
Definition von 188
Konvertieren von Strings aus/in 186
Landessprache, konvertieren in DatenbankZeichensatz 208
Namenskonventionen 191
Probleme mit 191-197
Bytes im Gegensatz zu Zeichen 192
Sortierreihenfolge in 197
String-Konstanten in 207
Suffix S(Server) oder C(Client) im Namen 191
Typen 189
Zeichen-Strings
Darstellung einer Zahl, konvertieren in numerischen Wert 250
mißratene Konvertierung in Zahlen 143
testen auf Gleichheit 197
Zeiger 895-903
Zeiger in Datenbank-Tabellen (siehe Cursor)
Zeilen
begrenzte Anzahl mit BULK COLLECT abrufen 544
Zwischenspeichern mehrerer Datenzeilen 802
Zeilenbezeichner (Rowids) 423
zeilenbezogene Trigger
Skript für 700
Zeilenvorschub
in Strings einfügen 210
Zeilenzahl, abrufen 574
Zeitdauern 279
Zeitpunkte 279
Zeiträume 167, 279
Arithmetik 316-324
Addieren und Subtrahieren zu/von
Datum/Uhrzeit 317
Genauigkeitsebenen für Zeiträume 322
Zeitraum zwischen zwei Daten 318
Zeiträume addieren und subtrahieren 321
Zeiträume multiplizieren und dividieren
322
Konvertieren 305-310
Formatieren für Anzeige 309
INTERVAL-Elementnamen 305
TO_xxINTERVAL-Funktionen 306
1058 |
Index
Zeitstempel 19, 167
für Remote-Programme 828
(siehe auch Datum und Uhrzeit)
Zeitstempel-Literale 289, 294
Zeitzonen 19
Abkürzungen und Beschreibungen, Liste 339
in Datum und Uhrzeit-Konvertierung 292
Funktionen für 328
FROM_TZ 332
NEW_TIME-Funktion 273, 339-341
Regionsnamen- und Zeitzonenabkürzungen,
von Oracle unterstützte 293
zerlegte Unicode-Zeichen 216
erkennen mit INSTRC-Funktion 218
Zerlegung, Objekt-basiert 933
ZERO_DIVIDE-Exception 144
Ziel-Label für GOTO-Anweisungen 111
ziellose REFs 903
Zip-Dateikomprimierung 971
zuordnen, Datentyp 971
Java und PL/SQL 960
PL/SQL und C, Parameter austauschen 985
Zusammenfassung logisch verwandter Funktionalität 689, 694
zusammengesetzte Datenstrukturen 163, 343
Datentypen, vordefinierte 165
(siehe auch Datensätze; Collections)
Zuverlässigkeit von Code 608
Zuweisung
einen Cursor (und seine Ergebnismenge) zu
einer anderen Cursor-Variable 555
Initialisieren von Collection-Variablen mit
384
Werte in Collection-Elementen 387
Zuweisungsoperator (:=) 75
Standardwerte für Konstanten setzen 171
Wert eines Datensatzfelds ändern 354
Zuweisungsoperator (=) 943
zwischenspeichern
Daten auf Package-Ebene 800-802
Datenbankzeilen mit Collections 400
Debugging im Library Cache 813
Funktionen des Shared Pool 831
statische Sitzungsdaten 676
Programm-Performance bessern 801
Verbessern der Anwendungs- Performance
689, 695
Herunterladen