# PL/SQL

| Dieses Buch steht im Regal Programmierung. | Zielgruppen: Studium und Beruf | Lehrbuch |

## Zusammenfassung des Projekts

* Zielgruppe: Anfänger - Einführung in PL/SQL; Anwender - Nachschlagewerk.
* Lernziele: Dieses Buch soll fundiertes Wissen der Programmierung in PL/SQL vermitteln und die Anwendung ermöglichen.
* Voraussetzungen: Grundlegende Kenntnisse der Programmierung, SQL, DBMS Oracle
* Buchpatenschaft / Ansprechperson: Dietmar
* Sind Co-Autoren gegenwärtig erwünscht? Wünsche aller Art bitte auf der Diskussionsseite anbringen. Ich kümmere mich drum. Da seit zwei Jahren sich niemand um das Buch gekümmert hat, gehe ich davon aus, das Co-Autoren nicht sofort zu erwarten sind.
* Richtlinien für Co-Autoren:
* Projektumfang und Abgrenzung zu anderen Wikibooks:
* Themenbeschreibung:
** Syntax der Sprache
** Programmstrukturen
** Exception
** Dynamisches PL/SQL
** wichtigste Systembibliotheken u.a.
*** DB-Arbeit
*** Kommunikation
*** XML
** Einbindung in andere Programmiersprachen
* Aufbau des Buches: Das Buch beschreibt, beginnend mit der einfachsten Programmstruktur bis hin zu den Bibliotheksstrukturen, die Syntax der Elemente der Sprache PL/SQL. An Beispielen wird das vermittelte Wissen erläutert, die, soweit der Zugriff auf eine ORACLE-DB möglich ist, abgearbeitet werden können. Ausführlich wird auf das Exceptionhandling eingegangen, mit der ein sinnvolles Fehlerhandling möglich ist. Ein weiteres Kapitel beschreibt grundlegende Systembibliotheken mit denen
** Datenbankarbeit,
** Kommunikation über TCP/IP,
** Sessionsynchronisation,
** Zugriffe auf das Filesystem und
** XML-Verarbeitung
möglich ist. Abschließend wird die Einbindung in andere Programmiersprachen angerissen.

## Sammeln zum Start

* Wer braucht das Buch?
* Die Architektur des Buches
* Wie funktioniert PL/SQL?

## Erstmal das Schreiben lernen

* Wer ist Herr Backus?
* Namen Zahlen und Co.
** Namen
** Zahlen
** Konstanten
** Schlüsselworte
* Was ist NULL?
* Operationswerkzeuge
** Arithmetische Operationszeichen
** Boolsche Operationszeichen
** Characteroperationszeichen
** Vergleichsoperationszeichen
** Mengenoperationszeichen
** NULL-Operationszeichen
* Wie kommentiert man? Kann man schreiben, wie man will?

## Typensammlung

* Vordefinierte Datentypen
** Skalare Typen
** LOB-Typen
** Typkonvertierungen
* Die Typen aus der Datenbank
* Den eigene Wunschrecord festlegen
* Die Subtypen
* Die Tabellensammlung im Speicher
** Index By
** V(ariable) Array
** Nested Table

## Deklarationszwang

* Die Veränderlichen – Variablen
* Die Unveränderlichen – Konstanten
* Die Indizierten – PL/SQL-Tabellen
* Die Selectierten – Cursor
* Die Fehlerhaften – Exception

## Anweisungen

* Ergibt sich aus – Ergibtanweisung
* Nichts tun – NULL-Anweisung

## Strukturierungen

* Grundlegender Aufbau
* Der Anonyme – anonymer Block
* Die One-Way-Rückgebenden – Funktionen
* Die Häufigsten – Prozeduren
* Die Bibliotheken – Packages

## Kontrollstrukturen

* Ja oder Nein? - IF-Anweisung
* Ja, Nein und Vielleicht (I)? – IF-ELSIF-Anweisung
* Ja, Nein und Vielleicht (II)? – CASE-Anweisung
* Einmal geht immer – LOOP-Schleife
* Wenn dann – WHILE-Schleife
* Einmal, zweimal ... – FOR-Schleife
* In die Datenbank geschaut – Cursor-Schleife
** Veraltet – OPEN, FETCH unD CLOSE
* Nichts wie weg – EXIT-Anweisung
* Unerwünscht – GOTO-Anweisung
* Wenn's im Dutzend billiger wird (I) – BULK-Anweisung
* Wenn's im Dutzend billiger wird (II) – FORALL-Anweisung

## Exception-Handling

* Exception-Handling
** Vordefinierte Exceptions
** Selbst definierte Exceptions für bestimmte SQL-Codes
** Selbst definierte Exceptions für fachliche Ausnahmen

## Dynamisches PL/SQL

* Dafür oder dagegen
* Ausführung sofort – EXECUTE IMMEDIATE
* Doppelte Dynamik – Parameter
* Museumsvariante – sollte erwähnt werden

## Objektorientierung

* Eigentlich schon vorhanden
* Eigene Objekte

## Systemkomponenten

* Allwissend – Datadictionary
* Systembibliotheken

## Anwendungen der Systembibliotheken
### Kommunikation

* PL-SQL ist nicht besonders geschwätzig.
* Console – Wie bei Telnet
* File – Wie im Grundlagensemester Informatik - Open - Write/Read - Close
* Socket – Wenn's über den Tellerrand des Servers gehen soll.
* HTTP – Das Tor zur großen, weiten Welt.
* SMTP – E-Mails verschicken.

### Sessions

* Wartezimmer (1) – Polling
* Wartezimmer (2) – Synchronisation

### XML

* Braucht man das?
* XML – Das stringt man sich doch selbst zusammen!
* XML – Der besondere XML-Typ für alle Fälle.
* XML – Aus Tabellendaten wird ein XML-FIle.

## Programmentwicklung

* Grundlagen der Programmentwicklung in PL/SQL
* Einbindung von PL/SQL in andere Programmiersprachen
** OracleForms
** C
** JAVA
* Programmentwicklung als Teamarbeit

## Anhang

* Schlüsselwort

## Alte Struktur
### Deklarationen

* Variable (Deklaration von Variablen und Konstanten)
* komplexe Datentypen (Typen, Tabellen eindimensional, mehrdimensional, Records, Kombination Tabellen mit Records)
* Objektrelationale Datentypen (Datentypen mit Methoden zu ihrer Verarbeitung)
* Operator (Operatoren)

### Anweisungen

* Zuweisungen (Wertzuweisungen von Variablen, Tabellen und Strukturen)
* DML-Befehle ausführen

### Kontrollstrukturen

* Schleife
* Cursor
* Exception-Handling
** Vordefinierte Exceptions
** Selbst definierte Exceptions für bestimmte SQL-Codes
** Selbst definierte Exceptions für fachliche Ausnahmen

### Unterprogramme

* Prozedur
** Syntax
** Berechtigung beim Aufruf
** autonome Prozeduren
* Funktion
* Trigger
* Package
** Syntax
** Overloading von Methoden
** von Oracle mitgelieferte Packages

### sonstiges

* Dynamisches SQL
* Verschlüsselung des Quellcodes
* Compiler-Optionen
* Tuning
* "Hallo Welt"-Einführung

## Literatur und Web-Links

* Literatur

## zu löschende Strukturen

* Grundlegender Aufbau
* Der Anonyme – anonymer Block
* Die One-Way-Rückgebenden – Funktionen

## Autoren

Bitte tragt euch hier ein wenn ihr an der Erstellung/Bearbeitung mitwirkt.
| Name | Kommentar |
| BJOTO | Hat damals das Buch Oracle begonnen |
| Michael R. | Korrekturen, Ergänzungen (Abgleich mit wikipedia hilfreich) |
| Julius-m | hat das Kapitel PL/SQL aus dem Buch Oracle herausgelöst und als eigenes Buch eingetragen. |
| Attackwave | Ergänzungen |
| Markus Daniel | Korrekturen, Ergänzungen |
| Torsten Mueller | Ergänzungen |
| Dietmar Schubert | Strukturelle Überarbeitung |