Oracle Database 11g: PL/SQL-Grundlagen Schulungsunterlagen D49990DE20 Production 2.0 Januar 2010 Bestellnummer: D63765
Autor Brian Pottle Technischer Inhalt und Überarbeitung Tom Best Christoph Burandt Yanti Chang Laszlo Czinkoczki Ashita Dhir Peter Driver Gerlinde Frenzen Nancy Greenberg Chaitanya Kortamaddi Tim Leblanc Bryan Roberts Abhishek X Singh Puja Singh Lex Van Der Werff 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. Grafische Gestaltung Satish Bettegowda Redaktion Vijayalakshmi Narasimhan Daniel Milne Herausgeber Jobi Varghese
Inhalt I Einführung Ziele I-2 Kursziele I-3 Schema "Human Resources" (HR) -für diesen Kurs I-4 Kursagenda I-5 Informationen zu den Kurs-Accounts I-6 In diesem Kurs verwendete Anhänge I-7 PL/SQL-Entwicklungsumgebungen I-8 Was ist Oracle SQL Developer? I-9 PL/SQL in SQL*Plus codieren I-10 PL/SQL in Oracle JDeveloper codieren I-11 Oracle 11g SQL- und PL/SQL-Dokumentation I-12 Zusammenfassung I-13 Übungen zur Einführung Überblick: Erste Schritte I-14 1 Einführung in PL/SQL Ziele 1-2 Agenda 1-3 PL/SQL 1-4 PL/SQL-Laufzeitarchitektur 1-6 PL/SQL Vorteile 1-7 PL/SQL-Blockstruktur 1-10 Agenda 1-12 Blocktypen 1-13 Programmkonstrukte 1-15 Anonyme Blöcke prüfen 1-17 Anonyme Blöcke ausführen 1-18 Agenda 1-19 Ausgaben von PL/SQL-Blöcken ermöglichen 1-20 Ausgabe von PL/SQL-Blöcken anzeigen 1-21 Quiz 1-22 Zusammenfassung 1-23 Übungen zu Lektion 1 Überblick 1-24 iii
2 PL/SQL-Variablen deklarieren Ziele 2-2 Agenda 2-3 Verwendungszwecke von Variablen 2-4 Anforderungen für Variablennamen 2-5 Variablen in PL/SQL 2-6 PL/SQL-Variablen deklarieren und initialisieren 2-7 Begrenzungszeichen in Zeichenfolgenliteralen 2-9 Agenda 2-10 Variablentypen 2-11 PL/SQL-Variablen deklarieren und initialisieren Richtlinien 2-13 PL/SQL-Variablen deklarieren Richtlinien 2-14 Benennungskonventionen der in diesem Kurs verwendeten PL/SQL-Strukturen 2-15 Skalare Datentypen 2-16 Skalare Basisdatentypen 2-17 Skalare Variablen deklarieren 2-21 Attribut %TYPE 2-22 Variablen mit dem Attribut %TYPE deklarieren 2-24 Boolesche Variablen deklarieren 2-25 Variablen mit LOB-Datentypen 2-26 Zusammengesetzte Datentypen Records und Collections 2-27 Agenda 2-28 Bind-Variablen 2-29 Bind-Variablen referenzieren 2-31 AUTOPRINT mit Bind-Variablen 2-32 Quiz 2-33 Zusammenfassung 2-34 Übungen zu Lektion 2 Überblick 2-35 3 Ausführbare Anweisungen erstellen Ziele 3-2 Agenda 3-3 Lexikalische Einheiten in PL/SQL-Blöcken 3-4 PL/SQL-Blocksyntax Richtlinien 3-6 Code kommentieren 3-7 SQL-Funktionen in PL/SQL 3-8 SQL-Funktionen in PL/SQL Beispiele 3-9 Sequences in PL/SQL-Ausdrücken 3-10 Datentypen konvertieren 3-11 Agenda 3-14 iv
Verschachtelte Blöcke 3-15 Verschachtelte Blöcke Beispiel 3-16 Gültigkeitsbereich und Sichtbarkeit von Variablen 3-17 Qualifier mit verschachtelten Blöcken 3-19 Herausforderung Gültigkeitsbereich von Variablen bestimmen 3-20 Agenda 3-22 Operatoren in PL/SQL 3-23 Operatoren in PL/SQL Beispiele 3-24 Richtlinien für die Programmierung 3-25 Code einrücken 3-26 Quiz 3-27 Zusammenfassung 3-28 Übungen zu Lektion 3 Überblick 3-29 4 Mit dem Oracle-Datenbankserver interagieren SQL-Anweisungen in PL/SQL- Programmen Ziele 4-2 Agenda 4-3 SQL-Anweisungen in PL/SQL 4-4 SELECT-Anweisungen in PL/SQL 4-5 Daten in PL/SQL abrufen Beispiel 4-9 Daten in PL/SQL abrufen 4-10 Mehrdeutige Namen 4-11 Benennungskonventionen 4-12 Agenda 4-13 Daten mit PL/SQL bearbeiten 4-14 Daten einfügen Beispiel 4-15 Daten aktualisieren Beispiel 4-16 Daten löschen Beispiel 4-17 Zeilen zusammenführen 4-18 Agenda 4-20 SQL-Cursor 4-21 SQL-Cursorattribute für implizite Cursor 4-23 Quiz 4-25 Zusammenfassung 4-26 Übungen zu Lektion 4 Überblick 4-27 5 Kontrollstrukturen erstellen Ziele 5-2 Ablauf der Ausführung steuern 5-3 Agenda 5-4 v
IF-Anweisungen 5-5 Einfache IF-Anweisungen 5-7 IF THEN ELSE-Anweisungen 5-8 IF ELSIF ELSE-Klauseln 5-9 Wert NULL in Anweisung IF 5-10 Agenda 5-11 CASE-Ausdrücke 5-12 CASE-Ausdrücke Beispiel 5-13 Searched CASE-Ausdrücke 5-14 CASE-Anweisungen 5-15 NULL-Werte verwenden 5-16 Logiktabellen 5-17 Boolesche Ausdrücke oder logische Ausdrücke? 5-18 Agenda 5-19 Iterative Kontrollstrukturen LOOP-Anweisungen 5-20 Basisschleifen 5-21 Basisschleifen Beispiel 5-22 WHILE-Schleifen 5-23 WHILE-Schleifen Beispiel 5-24 FOR-Schleifen 5-25 FOR-Schleifen Beispiel 5-27 FOR-Schleifen Regeln 5-28 Vorschläge zur Verwendung von Schleifen 5-29 Verschachtelte Schleifen und Labels 5-30 Verschachtelte Schleifen und Labels Beispiel 5-31 CONTINUE-Anweisungen in PL/SQL 5-32 CONTINUE-Anweisungen in PL/SQL 1. Beispiel 5-33 CONTINUE-Anweisungen in PL/SQL 2. Beispiel 5-34 Quiz 5-35 Zusammenfassung 5-36 Übungen zu Lektion 5 Überblick 5-37 6 Mit zusammengesetzten Datentypen arbeiten Ziele 6-2 Agenda 6-3 Zusammengesetzte Datentypen 6-4 PL/SQL-Records oder -Collections? 6-6 Agenda 6-7 PL/SQL-Records 6-8 PL/SQL-Records erstellen 6-9 vi
Struktur von PL/SQL-Records 6-10 %ROWTYPE-Attribute 6-11 PL/SQL-Records erstellen Beispiel 6-13 Vorteile bei Verwendung des Attributs %ROWTYPE 6-14 %ROWTYPE-Attribute Weiteres Beispiel 6-15 Records mit %ROWTYPE einfügen 6-16 Zeilen in einer Tabelle mit einem Record aktualisieren 6-17 Agenda 6-18 Assoziative Arrays (Tabelle INDEX BY) 6-19 Struktur von assoziativen Arrays 6-20 Schritte zur Erstellung von assoziativen Arrays 6-21 Assoziative Arrays erstellen und abrufen 6-22 INDEX BY-Tabellenmethoden 6-23 Record-Tabelle INDEX BY 6-24 Record-Tabelle INDEX BY 2. Beispiel 6-25 Nested Tables 6-26 VARRAY 6-28 Collection-Typen Zusammenfassung 6-29 Quiz 6-30 Zusammenfassung 6-31 Übungen zu Lektion 6 Überblick 6-32 7 Explizite Cursor Ziele 7-2 Agenda 7-3 Cursor 7-4 Vorgänge mit expliziten Cursorn 7-5 Explizite Cursor kontrollieren 7-6 Agenda 7-8 Cursor deklarieren 7-9 Cursor öffnen 7-11 Daten aus Cursorn lesen 7-12 Cursor schließen 7-15 Cursor und Records 7-16 Cursor FOR-Schleifen 7-17 Attribute von expliziten Cursorn 7-19 Attribut %ISOPEN 7-20 %ROWCOUNT und %NOTFOUND Beispiel 7-21 Cursor FOR-Schleifen mit Unterabfragen 7-22 Agenda 7-23 vii
Cursor mit Parametern 7-24 Agenda 7-26 FOR UPDATE-Klauseln 7-27 WHERE CURRENT OF-Klauseln 7-29 Quiz 7-30 Zusammenfassung 7-31 Übungen zu Lektion 7 Überblick 7-32 8 Exceptions behandeln Ziele 8-2 Agenda 8-3 Was ist eine Exception? 8-4 Exceptions behandeln Beispiel 8-5 Exceptions mit PL/SQL 8-6 Exceptions behandeln 8-7 Exception-Typen 8-8 Agenda 8-9 Exceptions abfangen Syntax 8-10 Exceptions abfangen Richtlinien 8-12 Vordefinierte Oracle-Serverfehler abfangen 8-13 Nicht vordefinierte Oracle-Serverfehler abfangen 8-16 Nicht vordefinierte Fehler abfangen Beispiel 8-17 Funktionen zum Abfangen von Exceptions 8-18 Benutzerdefinierte Exceptions abfangen 8-20 Exceptions in Unterblöcken propagieren 8-22 Prozedur RAISE_APPLICATION_ERROR 8-23 Quiz 8-26 Zusammenfassung 8-27 Übungen zu Lektion 8 Überblick 8-28 9 Stored Procedures und Stored Functions Einführung Ziele 9-2 Agenda 9-3 Prozeduren und Funktionen 9-4 Anonyme Blöcke und Unterprogramme Unterschiede 9-5 Agenda 9-6 Prozeduren Syntax 9-7 Prozeduren erstellen 9-8 Prozeduren aufrufen 9-10 viii
Agenda 9-11 Funktionen Syntax 9-12 Funktionen erstellen 9-13 Funktionen aufrufen 9-14 Parameter an Funktionen übergeben 9-15 Funktionen mit einem Parameter aufrufen 9-16 Quiz 9-17 Zusammenfassung 9-18 Übungen zu Lektion 9 Überblick 9-19 A Übungen und Lösungen B Tabellenbeschreibungen und -daten 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 ix
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 SQL*Plus-Befehl SPOOL D-16 Befehl AUTOTRACE D-17 Zusammenfassung D-18 E JDeveloper Oracle JDeveloper E-2 Database Navigator E-3 Verbindungen erstellen E-4 Datenbankobjekte durchsuchen E-5 SQL-Anweisungen ausführen E-6 Programmeinheiten erstellen E-7 Kompilieren E-8 Programmeinheiten ausführen E-9 Programmeinheiten löschen E-10 Fenster "Structure" E-11 Editor-Fenster E-12 Application Navigator E-13 Java-Stored Procedures bereitstellen E-14 Java für PL/SQL publizieren E-15 Wie kann ich mehr über JDeveloper 11g erfahren? E-16 F REF-Cursor Cursorvariablen F-2 Cursorvariablen Verwendung F-3 REF CURSOR-Typen definieren F-4 Anweisungen OPEN-FOR, FETCH und CLOSE F-7 Fetch-Vorgang Beispiel F-10 AP Übungen und Lösungen x