Corps du module

Le corps du module peut être écrit en PSQL ou être le corps d'un module externe.

Syntaxe module
<routine-body> ::=
    <psql-routine-spec>
  | <external-module-body>

<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-implimentation>

<subroutine-declaration> ::= <subfunc-decl> | <subproc-decl>

<subroutine-implimentation> ::= <subfunc-impl> | <subproc-impl>

<external-module-body> ::=
  EXTERNAL NAME '<extname>' ENGINE engine
  [AS '<extbody>']

<extname> ::=
  '<module-name>!<routine-name>[!<misc-info>]'
Table 1. Paramètres du corps du module
ParamètreDescription

declare-var

Déclaration d'une variable locale.

declare-cursor

Déclaration d'un curseur nommé.

subfunc-decl

Déclaration d'un sous-programme - fonction.

subproc-decl

Déclaration d'un sous-programme - procédure.

subfunc-impl

Mise en ouvre de la fonction du sous-programme.

subproc-impl

Mise en ouvre du sous-programme - procédures.

extbody

Le corps de la procédure externe. Chaîne littérale qui peut être utilisée par l'UDR à diverses fins.

module-name

Nom du module externe dans lequel se trouve la fonction.

routine-name

Nom de la fonction interne dans un module externe.

misc-info

Informations définies par l'utilisateur à envoyer à une fonction de module externe.

engine

Nom du moteur pour utiliser les fonctions externes. Habituellement, le nom de l'UDR est spécifié.