Oracle Database 11g: PL/SQL- Datenbankprogrammierung

Ähnliche Dokumente
Oracle Database 11g: PL/SQL-Grundlagen

Oracle Database 11g: PL/SQL und Datenbankprogrammierung Release 2

Oracle PL/SQL und Datenbankprogrammierung - LVC

Oracle Datenbankprogrammierung mit PL/SQL Grundlagen

Oracle Database: Program with PL/SQL

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Oracle Database 10g PL/SQL Programmierung

CARL HANSER VERLAG. Christopher Allen. Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank

O REILLY. Oracle PL/SQL Programmierung Paris - - Steven Feuerstein. mit Bill Pribyl. Deutsche Übersetzung von Dorothea Reder 2.

Oracle PL/SQL Marco Skulschus Marcus Wiederstein

Oracle PL/SQL - Grundlagen

Oracle Database 11g: SQL- Grundlagen II Fortgeschrittene SQL-Anweisungen

Professioneller Einstieg in Oracle Database 11g SQL

Oracle Database: Program with PL/SQL

Oracle Database 10g PL/SQL Programmierung

Oracle SQL. Seminarunterlage. Version vom

Ausnahmebehandlung. Ausnahmebehandlung mit PL/SQL. Ausnahmetypen. Ausnahmebehandlung

Arbeit mit zusammengesetzten Datentypen

Oracle Database 1Og PL/SQL- Programmierung

2 Anlegen und Konfigurieren von Datenbanken 35

Funktion definieren Gibt Summe der Gehälter zurück. Aufruf in einem SQL-Statement

SQL. Automatisierung: Trigger

... Trigger - Fehlersuche (Debugging)

Vorwort 11. Eine neue Datenbank erstellen 79;

Inhaltsverzeichnis. 1 Der SQL Server 2008 stellt sich vor Die grafischen Tools des SQL Server Eine neue Datenbank erstellen 87

Oracle Datenbankprogrammierung mit PL/SQL Aufbau

Oracle PL/SQL für Experten - Performance Analyse und Laufzeitoptimierung

Trigger schreiben. Überblick über Trigger. Datenbank Trigger: Beispiel. Aufbau eines Triggers

Oracle Database 11g: Professioneller Einstieg in SQL Release 2 (Deutsch)

Prozedurale Datenbank- Anwendungsprogrammierung

Inhaltsverzeichnis. Einleitung

Kapitel 4 Dynamisches SQL

Aufbau und Bestandteile von Formularen. Oracle Forms. Erstellen eines neuen Blocks (1) Starten von Oracle Forms

Explizite Cursor. Cursor. Steuerung des expliziten Cursors. Explizite Cursor Funktionen

Oracle Database 12c: Program with PL /SQL

Inhaltsverzeichnis. Vorwort Teil I Einführung. 1 Einleitung Der Microsoft SQL Server... 19

Objektorientierung unter Oracle richtet sich einerseits nach objekt-orientierten Programmiersprachen wie Java,

Erzeugung und Veränderung von Tabellen

Oracle Database 12c: Introduction to SQL (ORA-D80174)

Kapitel 4 Dynamisches SQL

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Prozedurale SQL-Erweiterungen

Inhaltsverzeichnis. Vorwort 13

Datenbankprogrammierung mit MySQL 5 und PHP 5 Spona

Schnellübersichten. SQL Grundlagen und Datenbankdesign

Oracle Database: Introduction to SQL

Richtig einsteigen: Access 2007 VBA-Programmierung

Inhaltsverzeichnis. Teil I Erste Schritte. 1 Einleitung Teil II Grundlagen von VBA. 2 Die ersten VBA-Prozeduren erstellen...

SQL Server 2005 Der schnelle Einstieg

Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel

Neue Welten: Externe Daten mit APEX nutzen

Ausgabe: Abteilungen Summe der Fehltage einer Abteilung. Nur für Mitarbeiter deren Fehltage < 3 Nur Abteilungen deren Fehltage-Summe > 1

<Insert Picture Here> Security-Basics. Privilegien, Rollen, SQL und PL/SQL - inkl. 12c-Update. Carsten Czarski, ORACLE Deutschland B.V. Co.

Inhaltsverzeichnis. Inhalt. 1 Einführung in die Datenbanktechnologie

PL/SQL - Programmierung von Programmeinheiten. Prof. Dr. T. Kudraß 1

BC402. Advanced ABAP GLIEDERUNG DES KURSES. Version der Schulung: 16 Dauer der Schulung: 5 Tage

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

xchekplus Benutzerhandbuch

Einführung in PL/SQL

SQL Server 2008 Der schnelle Einstieg

Objekt-relationales Datenbanksystem Oracle

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

Richtig einsteigen: Access 2010 VBA-Programmierung

S4D400. Einführung in die ABAP-Programmierung für SAP S/4HANA GLIEDERUNG DES KURSES. Version der Schulung: 10 Dauer der Schulung:

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

Professioneller Einstieg in Oracle SQL - LVC

Prakt. Datenbankprogrammierung. Sommersemester Überblick über Trigger. II,11: Erstellen von Datenbank- Triggern. Datenbank-Trigger: Beispiel

Oracle Forms Was validiere ich wo?

Triggern. Change Data Capture

Developing SQL Databases (MOC 20762)

Programmieren lernen in ASP.NET mit C#

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Inhaltsverzeichnis Einleitung xi Kapitel 1: Die Vorbereitung aufs Abenteuer

S4D430. Erstellen von Views in Core Data Services ABAP (CDS ABAP) GLIEDERUNG DES KURSES. Version der Schulung: 10 Dauer der Schulung: 3 Tage

Oracle PL/SQL für Experten - Performance Analyse und Laufzeitoptimierung

PL/SQL-Code mit APEX generieren

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Struktur von PL/SQL. Oracle PL/SQL Die Programmiersprache von Oracle. Ein Beispiel. Bildschirmausgabe. Using Oracle PL/SQL.

Visual Basic Editor CATIA V5

Das Einsteigerseminar ASP

Folien php/mysql Kurs der Informatikdienste

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern

HA400 ABAP-Programmierung für SAP HANA

12. Datenschutz: Zugriffsrechte in SQL Datenschutz: Zugriffsrechte in SQL

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Erste Schritte mit Eclipse

Transkript:

Oracle Database 11g: PL/SQL- Datenbankprogrammierung Schulungsunterlagen Band 1 D49986DE20 Production 2.0 Januar 2010 Bestellnummer: D63766

Autor Lauran Serhal Technischer Inhalt und Überarbeitung Anjulaponni Azhagulekshmi Christian Bauwens Christoph Burandt Zarko Cesljas Yanti Chang Salome Clement Laszlo Czinkoczki Ingrid DelaHaye Steve Friedberg Laura Garza Joel Goodman Nancy Greenberg Manish Pawar Brian Pottle Helen Robertson Tulika Srivastava Ted Witiuk Copyright 2009, Oracle. All rights reserved. Alle Rechte vorbehalten. Diese Kursunterlagen werden im Rahmen eines Lizenzvertrages zur Verfügung gestellt, der Einschränkungen hinsichtlich Nutzung und Offenlegung enthält und durch Gesetze zum Schutz geistigen Eigentums geschützt ist. Sofern nicht ausdrücklich in Ihrem Lizenzvertrag vereinbart oder gesetzlich geregelt, darf diese Software weder ganz noch teilweise in irgendeiner Form oder durch irgendein Mittel zu irgendeinem Zweck kopiert, reproduziert, übersetzt, gesendet, verändert, lizenziert, übertragen, verteilt, ausgestellt, ausgeführt, veröffentlicht oder angezeigt werden. Die Informationen in diesen Kursunterlagen können jederzeit und ohne vorherige Ankündigung geändert werden. Sollten Sie Fehler oder Unstimmigkeiten in den Unterlagen finden, bitten wir Sie, uns diese schriftlich mitzuteilen. Wir übernehmen keine Gewähr für die Richtigkeit der in diesen Unterlagen enthaltenen Informationen. Wird diese Dokumentation an die Regierung der Vereinigten Staaten von Amerika bzw. einen Nutzer im Auftrag der Regierung der Vereinigten Staaten von Amerika geliefert, gilt Folgendes: U.S. GOVERNMENT RIGHTS The U.S. Government s rights to use, modify, reproduce, release, perform, display, or disclose these training materials are restricted by the terms of the applicable Oracle license agreement and/or the applicable U.S. Government contract. Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer verbundenen Unternehmen. Andere Namen und Bezeichnungen können Marken ihrer jeweiligen Inhaber sein. Redaktion Arijit Ghosh Raj Kumar Herausgeber Pavithran Adka Sheryl Domingue

Inhalt I Einführung Ziele I-2 Lektionsagenda I-3 Kursziele I-4 Empfohlene Kursagenda I-5 Lektionsagenda I-7 Das in diesem Kurs verwendete Schema "Human Resources" (HR) I-8 Informationen zu den Kursaccounts I-9 In diesem Kurs verwendete Anhänge I-10 PL/SQL-Entwicklungsumgebungen I-11 Was ist Oracle SQL Developer? I-12 PL/SQL in SQL*Plus codieren I-13 PL/SQL in Oracle JDeveloper codieren I-14 Ausgaben von PL/SQL-Blöcken ermöglichen I-15 Lektionsagenda I-16 Oracle 11g SQL- und PL/SQL-Dokumentation I-17 Zusätzliche Ressourcen I-18 Zusammenfassung I-19 Übungen zur Einführung Überblick: Erste Schritte I-20 1 Prozeduren erstellen Ziele 1-2 Lektionsagenda 1-3 Modularisierte Unterprogramme erstellen 1-4 Unterprogramme mit Schichten erstellen 1-5 Entwicklung mit PL/SQL-Blöcken modularisieren 1-6 Anonyme Blöcke Überblick 1-7 PL/SQL-Laufzeitarchitektur 1-8 Was sind PL/SQL-Unterprogramme? 1-9 PL/SQL-Unterprogramme Vorteile 1-11 Anonyme Blöcke und Unterprogramme Unterschiede 1-12 Lektionsagenda 1-13 Was sind Prozeduren? 1-14 Prozeduren erstellen Überblick 1-15 Prozeduren mit der SQL-Anweisung CREATE OR REPLACE erstellen 1-16 iii

Prozeduren mit SQL Developer erstellen 1-17 In SQL Developer Prozeduren kompilieren und Kompilierungsfehler anzeigen 1-18 Kompilierungsfehler in SQL Developer korrigieren 1-19 Benennungskonventionen der in diesem Kurs verwendeten PL/SQL-Strukturen 1-20 Was sind Parameter und Parametermodi? 1-21 Formale und aktuelle Parameter 1-22 Prozedurale Parametermodi 1-23 Parametermodi Vergleich 1-24 Parametermodus IN Beispiel 1-25 Parametermodus OUT Beispiel 1-26 Parametermodus IN OUT Beispiel 1-27 OUT-Parameter anzeigen Untergeordnete Routine DBMS_OUTPUT.PUT_LINE 1-28 OUT-Parameter anzeigen SQL*Plus-Hostvariablen 1-29 Verfügbare Notationen für die Übergabe von aktuellen Parametern 1-30 Aktuelle Parameter übergeben Prozedur add_dept erstellen 1-31 Aktuelle Parameter übergeben Beispiele 1-32 Option DEFAULT für Parameter 1-33 Prozeduren aufrufen 1-35 Prozeduren mit SQL Developer aufrufen 1-36 Lektionsagenda 1-37 Behandelte Exceptions 1-38 Behandelte Exceptions Beispiel 1-39 Nicht behandelte Exceptions 1-40 Nicht behandelte Exceptions Beispiel 1-41 Prozeduren entfernen Mit der SQL-Anweisung DROP oder SQL Developer 1-42 Prozedurinformationen mit Data Dictionary Views anzeigen 1-43 Prozedurinformationen mit SQL Developer anzeigen 1-44 Quiz 1-45 Zusammenfassung 1-46 Übungen zu Lektion 1: Überblick Prozeduren erstellen, kompilieren und aufrufen 1-47 2 Funktionen erstellen und Unterprogramme debuggen Ziele 2-2 Lektionsagenda 2-3 Stored Functions Überblick 2-4 Funktionen erstellen 2-5 Prozeduren und Funktionen Unterschiede 2-6 Funktionen erstellen und ausführen Überblick 2-7 Stored Functions mit der Anweisung CREATE FUNCTION erstellen und aufrufen Beispiel 2-8 iv

Funktionen mit verschiedenen Methoden ausführen 2-9 Funktionen mit SQL Developer erstellen und kompilieren 2-11 Funktionen mit SQL Developer ausführen 2-12 Benutzerdefinierte Funktionen in SQL-Anweisungen Vorteile 2-13 Funktionen in SQL-Ausdrücken Beispiel 2-14 Benutzerdefinierte Funktionen in SQL-Anweisungen aufrufen 2-15 Funktionen aus SQL-Ausdrücken aufrufen Einschränkungen 2-16 Seiteneffekte beim Aufruf von Funktionen aus SQL-Ausdrücken ausschalten 2-17 Einschränkungen beim Aufrufen von Funktionen aus SQL Beispiel 2-18 Benannte und gemischte Notation aus SQL 2-19 Benannte und gemischte Notation aus SQL Beispiel 2-20 Funktionen entfernen Mit der SQL-Anweisung DROP oder SQL Developer 2-21 Funktionen mit Data Dictionary Views anzeigen 2-22 Funktionsinformationen mit SQL Developer anzeigen 2-23 Quiz 2-24 Übung 1 zu Lektion 2: Überblick 2-25 Lektionsagenda 2-26 PL/SQL-Unterprogramme mit dem SQL Developer-Debugger debuggen 2-27 Unterprogramme debuggen Überblick 2-28 Registerkarte zur Bearbeitung von Prozedur- oder Funktionscode 2-29 Registerkarte für Prozeduren oder Funktionen Symbolleiste 2-30 Registerkarte "Debugging Log" Symbolleiste 2-31 Zusätzliche Registerkarten 2-33 Prozeduren debuggen Beispiel: Neue Prozedur emp_list erstellen 2-34 Prozeduren debuggen Beispiel: Neue Funktion get_location erstellen 2-35 Breakpoints festlegen und emp_list für Debug-Modus kompilieren 2-36 Funktion get_location für Debug-Modus kompilieren 2-37 emp_list debuggen und Werte für den Parameter PMAXROWS eingeben 2-38 emp_list debuggen Mit "Step Into" (F7) in Code gehen 2-39 Daten anzeigen 2-41 Beim Debugging des Codes Variablen ändern 2-42 emp_list debuggen Mit "Step Over" Code übergehen 2-43 emp_list debuggen Code mit "Step Out" verlassen (UMSCHALT+F7) 2-44 emp_list debuggen "Run to Cursor" (F4) 2-45 emp_list debuggen "Step to End of Method" 2-46 Unterprogramme remote debuggen Überblick 2-47 Übung 2 zu Lektion 2 Überblick: SQL Developer-Debugger Einführung 2-48 Zusammenfassung 2-49 v

3 Packages erstellen Ziele 3-2 Lektionsagenda 3-3 Was sind PL/SQL-Packages? 3-4 Packages Vorteile 3-5 Komponenten eines PL/SQL-Packages 3-7 Interne und externe Sichtbarkeit von Packagekomponenten 3-8 PL/SQL-Packages entwickeln Überblick 3-10 Lektionsagenda 3-11 Packagespezifikationen erstellen Mit der Anweisung CREATE PACKAGE 3-12 Packagespezifikationen erstellen Mit SQL Developer 3-13 Package-Bodys erstellen Mit SQL Developer 3-14 Packagespezifikationen Beispiel: comm_pkg 3-15 Package-Bodys erstellen 3-16 Package-Bodys Beispiel: comm_pkg 3-17 Packageunterprogramme aufrufen Beispiele 3-18 Packageunterprogramme aufrufen Mit SQL Developer 3-19 Packages ohne Body erstellen und verwenden 3-20 Packages entfernen Mit SQL Developer oder der SQL-Anweisung DROP 3-21 Packages mit dem Data Dictionary anzeigen 3-22 Packages mit SQL Developer anzeigen 3-23 Richtlinien für das Erstellen von Packages 3-24 Quiz 3-25 Zusammenfassung 3-26 Übungen zu Lektion 3: Überblick Packages erstellen und verwenden 3-27 4 Mit Packages arbeiten Ziele 4-2 Lektionsagenda 4-3 Unterprogramme in PL/SQL überladen 4-4 Prozeduren überladen Beispiel: Packagespezifikationen erstellen 4-6 Prozeduren überladen Beispiel: Package-Bodys erstellen 4-7 Überladung und das Package STANDARD 4-8 Ungültige Prozedurreferenzen 4-9 Mit Vorwärtsdeklarationen Probleme mit ungültigen Prozedurreferenzen lösen 4-10 Packages initialisieren 4-11 Packagefunktionen in SQL 4-12 Seiteneffekte von PL/SQL-Unterprogrammen ausschalten 4-13 Packagefunktionen in SQL Beispiel 4-14 Lektionsagenda 4-15 vi

Persistenter Status von Packages 4-16 Persistenter Status von Packagevariablen Beispiel 4-18 Persistenter Status von Package-Cursorn Beispiel 4-19 Package CURS_PKG ausführen 4-21 Assoziative Arrays in Packages 4-22 Quiz 4-23 Zusammenfassung 4-24 Übungen zu Lektion 4: Überblick 4-25 5 Von Oracle bereitgestellte Packages zur Anwendungsentwicklung Ziele 5-2 Lektionsagenda 5-3 Von Oracle bereitgestellte Packages 5-4 Von Oracle bereitgestellte Packages Beispiele 5-5 Lektionsagenda 5-7 Package DBMS_OUTPUT Funktionsweise 5-8 Mit dem Package UTL_FILE mit Betriebssystemdateien interagieren 5-9 Einige Prozeduren und Funktionen von UTL_FILE 5-10 Dateien mit dem Package UTL_FILE bearbeiten Überblick 5-11 Verfügbare deklarierte Exceptions im Package UTL_FILE 5-12 Funktionen FOPEN und IS_OPEN Beispiel 5-13 UTL_FILE Beispiel 5-15 Was ist das Package UTL_MAIL? 5-17 UTL_MAIL einrichten und verwenden Überblick 5-18 Unterprogramme von UTL_MAIL Zusammenfassung 5-19 UTL_MAIL installieren und verwenden 5-20 Syntax der Prozedur SEND 5-21 Prozedur SEND_ATTACH_RAW 5-22 E-Mails mit einem binären Anhang senden Beispiel 5-23 Prozedur SEND_ATTACH_VARCHAR2 5-25 E-Mails mit einem Textanhang senden Beispiel 5-26 Quiz 5-28 Zusammenfassung 5-29 Übungen zu Lektion 5: Überblick 5-30 6 Dynamisches SQL Ziele 6-2 Lektionsagenda 6-3 Ausführungsablauf von SQL-Anweisungen 6-4 Mit dynamischem SQL arbeiten 6-5 vii

Dynamisches SQL 6-6 Natives dynamisches SQL (NDS) 6-7 Anweisung EXECUTE IMMEDIATE 6-8 Verfügbare Methoden zur NDS-Verwendung 6-9 Dynamisches SQL mit DDL-Anweisungen Beispiele 6-11 Dynamisches SQL mit DML-Anweisungen 6-12 Dynamisches SQL mit Single Row-Abfragen Beispiel 6-13 Anonyme PL/SQL-Blöcke dynamisch ausführen 6-14 PL/SQL-Code mit nativem dynamischem SQL kompilieren 6-15 Lektionsagenda 6-16 Package DBMS_SQL 6-17 Unterprogramme des Packages DBMS_SQL 6-18 DBMS_SQL mit DML-Anweisungen Zeilen löschen 6-20 DBMS_SQL mit parametrisierten DML-Anweisungen 6-21 Quiz 6-22 Zusammenfassung 6-23 Übungen zu Lektion 6: Überblick Natives dynamisches SQL 6-24 7 Überlegungen zum Design von PL/SQL-Code Ziele 7-2 Lektionsagenda 7-3 Konstanten und Exceptions standardisieren 7-4 Exceptions standardisieren 7-5 Exception-Behandlung standardisieren 7-6 Konstanten standardisieren 7-7 Lokale Unterprogramme 7-8 Rechte des Eigentümers und Rechte des ausführenden Benutzers Vergleich 7-9 Rechte des ausführenden Benutzers angeben AUTHID auf CURRENT_USER einstellen 7-10 Autonome Transaktionen 7-11 Autonome Transaktionen Features 7-12 Autonome Transaktionen Beispiel 7-13 Lektionsagenda 7-15 Hint NOCOPY 7-16 Auswirkungen des Hints NOCOPY 7-17 Wann ignoriert der PL/SQL-Compiler den Hint NOCOPY? 7-18 Hint PARALLEL_ENABLE 7-19 Sessionübergreifender Ergebniscache für PL/SQL-Funktionen 7-20 Ergebniscache für Funktionen aktivieren 7-21 Zwischengespeicherte Funktionen deklarieren und definieren Beispiel 7-22 viii

Klausel DETERMINISTIC mit Funktionen 7-24 Lektionsagenda 7-25 Klausel RETURNING 7-26 Bulk Binding 7-27 Bulk Binding Syntax und Schlüsselwörter 7-28 Bulk Binding mit FORALL Beispiel 7-30 BULK COLLECT INTO mit Abfragen 7-32 BULK COLLECT INTO mit Cursorn 7-33 BULK COLLECT INTO mit Klausel RETURNING 7-34 Bulk Binding in wenig gefüllten Collections 7-35 Bulk Binding mit Index-Array 7-38 Quiz 7-39 Zusammenfassung 7-40 Übungen zu Lektion 7: Überblick 7-41 8 Trigger erstellen Ziele 8-2 Was sind Trigger? 8-3 Trigger definieren 8-4 Trigger-Ereignistypen 8-5 Anwendungs- und Datenbank-Trigger 8-6 Trigger implementieren Szenarios für Geschäftsanwendungen 8-7 Verfügbare Trigger-Typen 8-8 Trigger-Ereignistypen und Trigger Body 8-9 DML-Trigger mit der Anweisung CREATE TRIGGER erstellen 8-10 Trigger-Auslösung angeben (Timing) 8-11 Trigger auf Anweisungs- bzw. Zeilenebene Vergleich 8-12 DML-Trigger mit SQL Developer erstellen 8-13 Auslösereihenfolge der Trigger Single Row-Bearbeitung 8-14 Auslösereihenfolge der Trigger Multiple Row-Bearbeitung 8-15 DML-Statement Trigger erstellen Beispiel: SECURE_EMP 8-16 Trigger SECURE_EMP testen 8-17 Bedingungsprädikate 8-18 DML-Row Trigger erstellen 8-19 Qualifizierer OLD und NEW 8-20 Qualifizierer OLD und NEW Beispiel 8-21 Row Trigger mit der Klausel WHEN bedingt auslösen 8-23 Trigger-Ausführungsmodell Zusammenfassung 8-24 Integritäts-Constraints mit After Triggern implementieren 8-25 Trigger INSTEAD OF 8-26 ix

Trigger INSTEAD OF erstellen Beispiel 8-27 Trigger INSTEAD OF zum Ausführen von DML für komplexe Views erstellen 8-28 Trigger-Status 8-30 Deaktivierte Trigger erstellen 8-31 Trigger mit den SQL-Anweisungen ALTER und DROP verwalten 8-32 Trigger mit SQL Developer verwalten 8-33 Trigger testen 8-34 Trigger-Informationen anzeigen 8-35 USER_TRIGGERS 8-36 Quiz 8-37 Zusammenfassung 8-38 Übungen zu Lektion 8: Überblick Statement Trigger und Row Trigger erstellen 8-39 9 Komplexe, DDL- und Datenbankereignis-Trigger erstellen Ziele 9-2 Was ist ein komplexer Trigger? 9-3 Mit komplexen Triggern arbeiten 9-4 Komplexe Trigger Vorteile 9-5 Ausführungszeitpunkt-Bereiche von komplexen Triggern für Tabellen 9-6 Komplexe Trigger für Tabellen Struktur 9-7 Komplexe Trigger für Views Struktur 9-8 Komplexe Trigger Einschränkungen 9-9 Trigger-Einschränkungen für sich verändernde Tabellen 9-10 Sich verändernde Tabellen Beispiel 9-11 Fehler in sich verändernden Tabellen mit komplexen Triggern beheben 9-13 Trigger für DDL-Anweisungen erstellen 9-15 Datenbankereignis-Trigger erstellen 9-16 Trigger für Systemereignisse erstellen 9-17 Trigger LOGON und LOGOFF Beispiel 9-18 CALL-Anweisungen in Triggern 9-19 Datenbankereignis-Trigger Vorteile 9-20 Erforderliche Systemberechtigungen zur Trigger-Verwaltung 9-21 Richtlinien für das Entwerfen von Triggern 9-22 Quiz 9-23 Zusammenfassung 9-24 Übungen zu Lektion 9: Überblick 9-25 x

10 PL/SQL-Compiler Ziele 10-2 Lektionsagenda 10-3 Initialisierungsparameter für PL/SQL-Kompilierung 10-4 Compiler-Einstellungen 10-7 PL/SQL-Initialisierungsparameter anzeigen 10-8 PL/SQL-Initialisierungsparameter anzeigen und einstellen 10-9 PL/SQL-Initialisierungsparameter ändern Beispiel 10-10 Lektionsagenda 10-11 PL/SQL-Kompilierungszeitwarnungen für Unterprogramme Überblick 10-12 Compiler-Warnungen Vorteile 10-14 PL/SQL-Kompilierungszeit-Warnmeldungen Kategorien 10-15 Warnmeldungsstufen einstellen 10-16 Compiler-Warnstufen einstellen Mit PLSQL_WARNINGS 10-17 Compiler-Warnstufen einstellen Mit PLSQL_WARNINGS, Beispiele 10-18 Compiler-Warnstufen einstellen Mit PLSQL_WARNINGS in SQL Developer 10-19 Aktuelle Einstellung von PLSQL_WARNINGS anzeigen 10-20 Compiler-Warnungen anzeigen Mit SQL Developer, SQL*Plus oder Data Dictionary Views 10-21 SQL*Plus-Warnmeldungen Beispiel 10-22 Richtlinien für die Verwendung von PLSQL_WARNINGS 10-23 Lektionsagenda 10-24 Compiler-Warnstufen einstellen Mit dem Package DBMS_WARNING 10-25 Package DBMS_WARNING Unterprogramme 10-27 DBMS_WARNING-Prozeduren Syntax, Parameter und zulässige Werte 10-28 DBMS_WARNING-Prozeduren Beispiel 10-29 DBMS_WARNING-Funktionen Syntax, Parameter und zulässige Werte 10-30 DBMS_WARNING-Funktionen Beispiel 10-31 DBMS_WARNING Beispiel 10-32 Warnmeldung PLW 06009 10-34 Warnung PLW 06009 Beispiel 10-35 Quiz 10-36 Zusammenfassung 10-37 Übungen zu Lektion 10: Überblick 10-38 xi

11 PL/SQL-Code verwalten Ziele 11-2 Lektionsagenda 11-3 Was ist Conditional Compilation? 11-4 Wie funktioniert Conditional Compilation? 11-5 Auswahlanweisungen 11-6 Vordefinierte und benutzerdefinierte Abfrageanweisungen 11-7 Parameter PLSQL_CCFLAGS und Abfrageanweisungen 11-8 Einstellung für den Initialisierungsparameter PLSQL_CCFLAGS anzeigen 11-9 Parameter PLSQL_CCFLAGS und Abfrageanweisungen Beispiel 11-10 Benutzerdefinierte Fehler mit Conditional Compilation-Fehleranweisungen auslösen 11-11 Statische Ausdrücke und Conditional Compilation 11-12 Package DBMS_DB_VERSION Boolesche Konstanten 11-13 Packagekonstanten in DBMS_DB_VERSION 11-14 Conditional Compilation und Datenbankversionen Beispiel 11-15 Quelltext mit DBMS_PREPROCESSOR-Prozeduren ausgeben oder abrufen 11-17 Lektionsagenda 11-18 Was ist Obfuscation? 11-19 Obfuscation Vorteile 11-20 Neue Funktionalität von dynamischer Obfuscation seit Oracle 10g 11-21 Nicht verschlüsselter PL/SQL-Code Beispiel 11-22 Verschlüsselter PL/SQL-Code Beispiel 11-23 Dynamische Obfuscation Beispiel 11-24 PL/SQL Wrapper-Utility 11-25 Wrapper-Utility ausführen 11-26 Wrapping-Ergebnisse 11-27 Wrapping-Richtlinien 11-28 Package DBMS_DDL und Wrap Utility Vergleich 11-29 Quiz 11-30 Zusammenfassung 11-31 Übungen zu Lektion 11: Überblick 11-32 12 Abhängigkeiten verwalten Ziele 12-2 Abhängigkeiten von Schemaobjekten Überblick 12-3 Abhängigkeiten 12-4 Direkte lokale Abhängigkeiten 12-5 Direkte Objektabhängigkeiten abfragen Mit der View USER_DEPENDENCIES 12-6 Objektstatus abfragen 12-7 xii

Invalidierung abhängiger Objekte 12-8 Schemaobjektänderungen, durch die einige Abhängigkeiten ungültig werden Beispiel 12-9 Direkte und indirekte Abhängigkeiten anzeigen 12-11 Abhängigkeiten mit der View DEPTREE anzeigen 12-12 Genauere Metadaten zu Abhängigkeiten in Oracle Database 11g 12-13 Fein granulierte Abhängigkeitsverwaltung 12-14 Fein granulierte Abhängigkeitsverwaltung 1. Beispiel 12-15 Fein granulierte Abhängigkeitsverwaltung 2. Beispiel 12-17 Änderungen bei Synonymabhängigkeiten 12-18 Gültige PL/SQL-Programmeinheiten und Views beibehalten 12-19 Weiteres Szenario lokaler Abhängigkeiten 12-20 Richtlinien zur Reduzierung für ungültig erklärter Objekte 12-21 Objekte neu validieren 12-22 Fernabhängigkeiten 12-23 Fernabhängigkeiten Konzepte 12-24 Parameter REMOTE_DEPENDENCIES_MODE einstellen 12-25 Remote-Prozedur B wird um 8 Uhr kompiliert 12-26 Lokale Prozedur A wird um 9 Uhr kompiliert 12-27 Prozedur A ausführen 12-28 Remote-Prozedur B wird um 11 Uhr rekompiliert 12-29 Prozedur A ausführen 12-30 Signaturmodus 12-31 PL/SQL-Programmeinheiten rekompilieren 12-32 Nicht erfolgreiche Rekompilierung 12-33 Erfolgreiche Rekompilierung 12-34 Prozeduren rekompilieren 12-35 Packages und Abhängigkeiten Unterprogramm referenziert das Package 12-36 Packages und Abhängigkeiten Packageunterprogramm referenziert Prozedur 12-37 Quiz 12-38 Zusammenfassung 12-39 Übungen zu Lektion 12: Überblick Abhängigkeiten im Schema verwalten 12-40 Anhang A: Übungen und Lösungen Anhang AP: Zusätzliche Übungen und Lösungen Anhang B: Tabellenbeschreibungen xiii

Anhang C: SQL Developer Ziele C-2 Was ist Oracle SQL Developer? C-3 SQL Developer Spezifikationen C-4 SQL Developer Benutzeroberfläche 1.5 C-5 Datenbankverbindungen erstellen C-7 Datenbankobjekte durchsuchen C-10 Tabellenstrukturen anzeigen C-11 Dateien durchsuchen C-12 Schemaobjekte erstellen C-13 Neue Tabellen erstellen Beispiel C-14 SQL Worksheet C-15 SQL-Anweisungen ausführen C-18 SQL-Skripte speichern C-19 Gespeicherte Skriptdateien ausführen 1. Methode C-20 Gespeicherte Skriptdateien ausführen 2. Methode C-21 SQL-Code formatieren C-22 Codeauszüge C-23 Codeauszüge Beispiel C-24 Prozeduren und Funktionen debuggen C-25 Datenbankberichte C-26 Benutzerdefinierte Berichte erstellen C-27 Suchmaschinen und externe Tools C-28 Voreinstellungen festlegen C-29 SQL Developer-Layout zurücksetzen C-30 Zusammenfassung C-31 Anhang D: SQL*Plus Ziele D-2 SQL und SQL*Plus Interaktion D-3 SQL-Anweisungen und SQL*Plus-Befehle Vergleich D-4 SQL*Plus Überblick D-5 Bei SQL*Plus anmelden D-6 Tabellenstrukturen anzeigen D-7 SQL*Plus-Bearbeitungsbefehle D-9 LIST, n und APPEND D-11 Befehl CHANGE D-12 SQL*Plus-Dateibefehle D-13 Befehle SAVE und START D-14 Befehl SERVEROUTPUT D-15 xiv

SQL*Plus-Befehl SPOOL D-16 Befehl AUTOTRACE D-17 Zusammenfassung D-18 Anhang E: JDeveloper Ziele E-2 Oracle JDeveloper E-3 Database Navigator E-4 Verbindungen erstellen E-5 Datenbankobjekte durchsuchen E-6 SQL-Anweisungen ausführen E-7 Programmeinheiten erstellen E-8 Kompilieren E-9 Programmeinheiten ausführen E-10 Programmeinheiten löschen E-11 Fenster "Structure" E-12 Editor-Fenster E-13 Application Navigator E-14 Java-Stored Procedures bereitstellen E-15 Java für PL/SQL publizieren E-16 Wie kann ich mehr über JDeveloper 11g erfahren? E-17 Zusammenfassung E-18 Anhang F: PL/SQL Wiederholung Ziele F-2 Blockstruktur für anonyme PL/SQL-Blöcke F-3 PL/SQL-Variablen deklarieren F-4 Variablen mit dem Attribut %TYPE deklarieren Beispiele F-5 PL/SQL-Records erstellen F-6 Attribut %ROWTYPE Beispiele F-7 PL/SQL-Tabellen erstellen F-8 SELECT-Anweisungen in PL/SQL Beispiel F-9 Daten einfügen Beispiel F-10 Daten aktualisieren Beispiel F-11 Daten löschen Beispiel F-12 Transaktionen mit den Anweisungen COMMIT und ROLLBACK steuern F-13 Anweisungen IF, THEN und ELSIF Beispiel F-14 Basisschleifen Beispiel F-15 FOR-Schleifen Beispiel F-16 WHILE-Schleifen Beispiel F-17 xv

Implizite SQL-Cursorattribute F-18 Explizite Cursor steuern F-19 Explizite Cursor steuern Cursor deklarieren F-20 Explizite Cursor steuern Cursor öffnen F-21 Explizite Cursor steuern Daten aus Cursorn lesen F-22 Explizite Cursor steuern Cursor schließen F-23 Attribute von expliziten Cursorn F-24 Cursor FOR-Schleifen Beispiel F-25 Klausel FOR UPDATE Beispiel F-26 Klausel WHERE CURRENT OF Beispiel F-27 Vordefinierte Oracle-Serverfehler abfangen F-28 Vordefinierte Oracle Serverfehler abfangen Beispiel F-29 Nicht vordefinierte Fehler F-30 Benutzerdefinierte Exceptions Beispiel F-31 Prozeduren RAISE_APPLICATION_ERROR F-32 Zusammenfassung F-34 Anhang G: Untersuchungen zur Implementierung von Triggern Ziele G-2 Sicherheit im Server steuern G-3 Sicherheit mit Datenbank-Triggern steuern G-4 Datenintegrität im Server durchsetzen G-5 Datenintegrität mit Triggern schützen G-6 Referenzielle Integrität im Server durchsetzen G-7 Referenzielle Integrität mit Triggern schützen G-8 Tabellen im Server replizieren G-9 Tabellen mit Triggern replizieren G-10 Abgeleitete Daten im Server berechnen G-11 Abgeleitete Werte mit Triggern berechnen G-12 Ereignisse mit Triggern protokollieren G-13 Zusammenfassung G-15 Anhang H: Packages DBMS_SCHEDULER und HTP Ziele H-2 Webseiten mit dem Package HTP generieren H-3 Package HTP Prozeduren H-4 HTML-Dateien mit SQL*Plus erstellen H-5 Package DBMS_SCHEDULER H-6 Jobs erstellen H-8 Jobs mit Inline-Parametern erstellen H-9 xvi

Jobs mit Programmen erstellen H-10 Jobs für Programme mit Argumenten erstellen H-11 Jobs mit Ausführungsplänen erstellen H-12 Wiederholungsintervalle für Jobs einstellen H-13 Jobs mit benannten Programmen und Ausführungsplänen erstellen H-14 Jobs verwalten H-15 Data Dictionary Views H-16 Zusammenfassung H-17 xvii

xviii