Eine Prozedur wird mit der SQL-Anweisung CREATE PROCEDURE erzeugt, siehe "CREATE PROCEDURE - Prozedur erzeugen". Eine Prozedur kann auch im Rahmen der SQL-Anweisung CREATE SCHEMA erzeugt werden, siehe "CREATE SCHEMA - Schema erzeugen".
Prozeduren können mit Eingabe-, Ein-/Ausgabe- und Ausgabeparametern definiert werden.
par_
) von Spaltennamen unterscheiden.Beim Erzeugen der Prozedur muss der aktuelle Berechtigungsschlüssel das EXECUTE-Privileg für die in der Prozedur direkt aufgerufenen Routinen besitzen. Zusätzlich muss er für alle Tabellen und Spalten, die in der Prozedur angesprochen werden, diejenigen Privilegien besitzen, die benötigt werden, um die in der Prozedur enthaltenen DML-Anweisungen ausführen zu können.
Der Prozedurtext ist in SESAM/SQL vollständig in der Programmiersprache SQL geschrieben. Folgende SQL-Anweisungen zur Datensuche und -manipulation sind in Prozeduren zulässig, siehe Abschnitt „CREATE PROCEDURE - Prozedur erzeugen":
SQL-Anweisung ohne Cursor | Funktion in der Prozedur | siehe |
SELECT | Liest einen einzelnen Satz | |
INSERT | Fügt Sätze in eine bestehende Tabelle ein | |
UPDATE | Ändert in einer Tabelle die Spalten der Sätze, | |
DELETE | Löscht in einer Tabelle die Sätze, | |
MERGE | Ändert in Abhängigkeit von einer bestimmten Bedingung | "MERGE - Sätze in Tabelle einfügen oder Spaltenwerte ändern" |
SQL-Anweisung | Funktion in der Prozedur | siehe |
OPEN | Öffnet einen lokalen Cursor | |
FETCH | Positioniert einen lokalen Cursor und liest ggf. den aktuellen Satz | |
UPDATE | Ändert in einer Tabelle die Spalten des Satzes, | |
DELETE | Löscht in einer Tabelle den Satz, auf den der Cursor positioniert ist | |
CLOSE | Schließt einen lokalen Cursor |
Tabelle 25: SQL-Anweisungen zur Datenmanipulation in Prozeduren
Neben obigen SQL-Anweisungen kann eine Prozedur auch Kontrollanweisungen (siehe Abschnitt „Kontrollanweisungen in Routinen") und Diagnoseanweisungen(siehee Abschnitt „Diagnoseinformationen in Routinen") enthalten.
Eine Prozedur darf keine dynamisch formulierten SQL-Anweisungen oder Cursorbeschreibungen enthalten, siehe Abschnitt „Dynamische SQL".
Der aktuelle Berechtigungsschlüssel erhält automatisch das EXECUTE-Privileg für die erzeugte Prozedur. Hat er für die betreffenden Privilegien sogar die Berechtigung, diese weitergeben zu dürfen, dann darf er auch das EXECUTE-Privileg an andere Berechtigungsschlüssel weitergegeben.
Eine SQL-Anweisung in einer Prozedur darf auf die Parameter der Prozedur und (wenn die Anweisung Teil einer COMPOUND-Anweisung ist) auf lokale Variablen, jedoch nicht auf Benutzervariablen zugreifen.
Kommentare
Beschreibende Kommentare (siehe "Kommentar") können beliebig in eine Prozedur eingefügt werden.