Eine Prozedur ist eine Subroutine, die keinen Rückgabewert hat. Sie kann Eingabeparameter vom Aufrufenden übernehmen und Ausgabeparameter an den Aufrufenden zurückgeben.
Prozeduren und Funktionen sind sich sehr ähnlich. Allerdings besitzen Prozeduren im Gegensatz zu Funktionen keinen Rückgabewert. Aus diesem Grund können sie nicht Teil einer Anweisung sein und werden mit der CALL-Anweisung aufgerufen. Prozeduren verfügen in der Regel über Ausgabeparameter.
Sie können eine Prozedur in ESQL (eine interne Prozedur) oder als in einer Datenbank gespeicherte Prozedur (eine externe Prozedur) implementieren. Die ESQL-Prozedur muss eine einzelne ESQL-Anweisung sein, diese Anweisung kann jedoch auch eine zusammengesetzte Anweisung wie BEGIN END sein. In einer EVAL-Anweisung oder einer EVAL-Funktion können Sie keine Prozedur definieren.
Wenn Sie eine Prozedur definieren, müssen Sie ihr einen Namen geben. Bei dem Namen muss die Groß-/Kleinschreibung nicht beachtet werden (d. h., Sie können den Namen mit einer beliebigen Kombination aus Groß- und Kleinbuchstaben verwenden, er stimmt trotzdem mit der Deklaration überein). Im Gegensatz dazu muss bei Namen, die Sie für Schemata, Konstanten, Variablen und Kennungen deklarieren, die Groß-/Kleinschreibung beachtet werden, und Sie müssen diese Namen genau so angeben, wie Sie sie deklariert haben.
Ein ESQL-Ausdruck kann einen Verweis auf eine Prozedur in einem anderen Brokerschema enthalten (in einer ESQL-Datei in demselben oder einem anderen abhängigen Projekt definiert). Wenn Sie dieses Verfahren verwenden möchten, müssen Sie einen vollständig qualifizierten Namen für die Prozedur angeben oder eine PATH-Anweisung einfügen, die das Qualifikationsmerkmal festlegt. Die PATH-Anweisung muss in derselben ESQL-Datei, jedoch nicht innerhalb eines MODULS codiert sein.
Eine externe Datenbankprozedur wird durch das Schlüsselwort EXTERNAL und den Namen der externen Prozedur angegeben. Diese Prozedur muss in der Datenbank und im Broker definiert werden, und der mit dem Schlüsselwort EXTERNAL angegebene Name und der Name der gespeicherten Datenbankprozedur müssen identisch sein, auch wenn die Parameternamen nicht übereinstimmen müssen. Der Name der ESQL-Prozedur muss nicht mit dem externen Namen, den sie definiert, übereinstimmen.
Überlastete Prozeduren werden von keinen Datenbank unterstützt. (Eine überlappende Prozedur ist eine Prozedur, die denselben Namen hat wie eine andere Prozedur in demselben Datenbankschema, jedoch eine andere Anzahl an Parametern oder Parameter anderer Typen.) Wenn der Broker eine überlappende Prozedur feststellt, gibt er eine Ausnahmebedingung aus.
Die dynamische Schemanamensauflösung für gespeicherte Prozeduren wird unterstützt; wenn Sie die Prozedur definieren, müssen Sie vor dem Aufruf der Prozedur durch ESQL einen Platzhalter für das Schema angeben, das aufgelöst wird. Weitere Informationen hierzu finden Sie unter Gespeicherte Prozeduren aufrufen.