Das Oracle-Datenbanksystem bietet eine prozedurale Erweiterung von SQL an, genannt PL/SQL. Hiermit können SQL-Statements zu namenlosen Blöcken, Prozeduren oder Funktionen zusammengefaßt und ihr Ablauf durch Kontrollstrukturen gesteuert werden.
Sei eine Tabelle konto mit Kontonummern und Kontoständen angelegt durch
Listing 9.1 zeigt einen namenlosen PL/SQL-Block, der 50 Konten mit durchlaufender Numerierung einrichtet und alle Kontostände mit 0 initialisiert.create table konto (nr int, stand int);
Listing 9.1: Namenloser PL/SQL-Block
Listing 9.2 zeigt eine benannte PL/SQL-Prozedur, welche versucht, innerhalb der Tabelle konto eine Überweisung durchzuführen und danach das Ergebnis in zwei Tabellen
in Form einer Erfolgs- bzw. Mißerfolgsmeldung festhält.create table gebucht (datum DATE, nr_1 int, nr_2 int, betrag int); create table abgelehnt (datum DATE, nr_1 int, nr_2 int, betrag int);
Im Gegensatz zu einem konventionellen Benutzerprogramm wird eine PL/SQL-Prozedur in der Datenbank gespeichert. Sie wird aufgerufen und (später) wieder entfernt durch
execute ueberweisung (42,37,50); drop procedure ueberweisung;
In Listing 9.3 wird eine Funktion f2c definiert, die eine übergebene Zahl als Temperatur in Fahrenheit auffaßt und den Wert nach Celsius umrechnet.
Der Aufruf der Funktion erfolgt innerhalb einer SQL-Abfrage:
select nr, f2c(nr) from daten;