Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Erzeugen einer Prozedur

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.

Empfehlung Parameternamen sollten sich (z.B. durch Vergabe eines Präfixes wie 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

"SELECT - Einzelnen Satz lesen"

INSERT

Fügt Sätze in eine bestehende Tabelle ein

"INSERT - Sätze in Tabelle einfügen"

UPDATE

Ändert in einer Tabelle die Spalten der Sätze,
die eine bestimmte Suchbedingung erfüllen

"UPDATE - Spaltenwerte ändern"

DELETE

Löscht in einer Tabelle die Sätze,
die eine bestimmte Suchbedingung erfüllen

"DELETE - Sätze löschen"

MERGE

Ändert in Abhängigkeit von einer bestimmten Bedingung
Sätze in einer Tabelle oder fügt Sätze in eine Tabelle ein

"MERGE - Sätze in Tabelle einfügen oder Spaltenwerte ändern"

SQL-Anweisung
mit Cursor

Funktion in der Prozedur

siehe

OPEN

Öffnet einen lokalen Cursor

"OPEN - Cursor öffnen"

FETCH

Positioniert einen lokalen Cursor und liest ggf. den aktuellen Satz

"FETCH - Cursor positionieren und Satz lesen"

UPDATE

Ändert in einer Tabelle die Spalten des Satzes,
auf den der Cursor positioniert ist

"UPDATE - Spaltenwerte ändern"

DELETE

Löscht in einer Tabelle den Satz, auf den der Cursor positioniert ist

"DELETE - Sätze löschen"

CLOSE

Schließt einen lokalen Cursor

"CLOSE - Cursor schließen"

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.