`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