Тело модуля
Тело модуля может быть написано на языке PSQL или быть телом внешнего модуля.
<routine-body> ::=
<psql-routine-spec>
| <external-routine-spec>
<psql-routine-spec> ::=
[<rights-clause>] <psql-routine-body>
<rights-clause> ::=
SQL SECURITY {DEFINER | INVOKER}
<psql-routine-body> ::=
AS
[<declarations>]
BEGIN
[<PSQL_statements>]
END
<declarations> ::=
<declare-item> [<declare-item> ...]
<declare-item> ::=
<declare-var>;
| <declare-cursor>;
| <subroutine-declaration>;
| <subroutine-implementation>
<subroutine-declaration> ::= <subfunc-decl> | <subproc-decl>
<subroutine-implementation> ::= <subfunc-impl> | <subproc-impl>
<external-routine-spec> ::=
<external-routine-reference>
[AS <extbody>]
<external-routine-reference> ::= EXTERNAL NAME <extname> ENGINE <engine>
<extname> ::=
'<module-name>!<routine-name>[!<misc-info>]'
| Параметр | Описание |
|---|---|
declare-var |
Объявление локальной переменной. |
declare-cursor |
Объявление именованного курсора. |
subfunc-decl |
Объявление подпрограммы – функции. |
subproc-decl |
Объявление подпрограммы – процедуры. |
subfunc-impl |
Реализация подпрограммы – функции. |
subproc-impl |
Реализация подпрограммы – процедуры. |
extbody |
Тело внешней процедуры.Строковый литерал который может использоваться UDR для различных целей. |
module-name |
Имя внешнего модуля, в котором расположена функция. |
routine-name |
Внутреннее имя функции внутри внешнего модуля. |
misc-info |
Определяемая пользователем информация для передачи в функцию внешнего модуля. |
engine |
Имя движка для использования внешних функций.Обычно указывается имя UDR. |