2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. 2. AUFLAGE Oracle PL/SQL Programmierung Steven Feuerstein mit Bill Pribyl Deutsche Übersetzung von Dorothea Reder O REILLY - - - - Paris - -
Inhalt Vorwort... Xlll Programmieren mit PVSQL... i Einführung in PL/SQL... 3 WasistPL/SQL?... 3 Die Ursprünge von PL/SQL... 4 Dasist PWSQL... 7 PWSQL-Versionen... 11 Ressourcen für PL/SQL-Entwickler... 23 Einige Ratschläge... 27 PVSQL-Code schreiben und ausführen... 31 SQYPlus... 32 Wichtige PL/SQL-Tasks ausführen... 47 PL/SQL-basierte Entwicklungswerkzeuge von Oracle... 55 PL/SQL von anderen Sprachen aus aufrufen... 58 Und was gibt es sonst noch?... 63 Grundlagen der Sprache PUSQL... 64 Die Blockstruktur von PL/SQL... 64 Der Zeichensatz von PL/SQL... 74 Bezeichner... 75 Literale... 80 Das Semikolon als Trennzeichen... 83 Kommentare... 83 Das Schlüsselwort PRAGMA... 85 Label... 86
II Die Struktur von PVSQL-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 Exceptionsauslösen... 146 Exceptions behandeln... 150 111 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 Vlll I 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 De 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 1 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 Variablenbinden... 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 PV/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 I 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 PVSQL-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 PVSQL für Fortgeschrittene... 805 20 Die Laufzeitarchitektur von PUSQL... 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 PVSQL... 872 Einfuhrung 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 Ioadjava... 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... 1003 XI1 I Inhalt