affectation
Créez une nouvelle fonction stockée.
Syntaxe
CREATE FUNCTION funcname [(<inparam> [, <inparam> ...])]
RETURNS <type> [NOT NULL] [COLLATE collation]
[DETERMINISTIC]
<routine-body>
<inparam> ::= <param_decl> [{= | DEFAULT} <value>]
<value> ::= {<literal> | NULL | <context_var>}
<param_decl> ::= paramname <type> [NOT NULL] [COLLATE collation]
<type> ::=
<datatype>
| [TYPE OF] domain
| TYPE OF COLUMN rel.col
<datatype> ::=
<scalar_datatype> | <blob_datatype>
<scalar_datatype> ::= Voir Syntaxe des types de données scalaires.
<blob_datatype> ::= Voir Syntaxe du type de données BLOB.
<routine-body> ::=
<psql-routine-spec>
| <external-routine-reference>
<psql-routine-spec> ::=
[<rights-clause>] <psql-routine-body>
<rights-clause> ::=
SQL SECURITY {DEFINER | INVOKER}
<psql-routine-body> ::=
Voir module-body syntax.
<external-routine-spec> ::=
<external-routine-reference>
[AS <extbody>]
<external-routine-reference> ::= EXTERNAL NAME '<extname>' ENGINE <engine>
<extname> ::= '<module-name>!<routine-name>[!<misc-info>]'
Table 1. Paramètres de la fonction CREATE FUNCTION
Paramètre |
Description |
funcname |
Le nom de la fonction stockée.Peut contenir jusqu’à 63 caractères. |
inparam |
Description du paramètre d’entrée. |
literal |
Un littéral dont le type est compatible avec le paramètre. |
context_var |
Toute variable contextuelle dont le type est compatible avec celui du paramètre. |
paramname |
Le nom du paramètre d’entrée d’une fonction. Peut contenir jusqu’à 63 caractères. Le nom du paramètre doit être unique parmi les paramètres d’entrée de la fonction ainsi que ses variables locales. |
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. |
extbody |
Le corps de la fonction externe. Une chaîne littérale qui peut être utilisée par l’UDR à diverses fins. |
engine |
Nom du moteur pour l’utilisation des fonctions externes. Habituellement, le nom de l’UDR est donné. |
datatype |
Type de données SQL. |
collation |
Ordre de tri. |
domain_name |
Nom de domaine. |
rel |
Le nom d’une table ou d’une vue. |
col |
Le nom de la colonne de la table ou de la vue. |
L’instruction CREATE FUNCTION
crée une nouvelle fonction stockée. Le nom de la fonction stockée doit être unique parmi les noms de toutes les fonctions stockées et des fonctions externes (UDF), sauf s’il s’agit d’une fonction interne ("sous-programme"). Pour les fonctions internes, l’unicité est suffisante uniquement dans les modules qui les "couvrent".
Note
|
Il est également souhaitable que le nom de la fonction stockée soit unique parmi les noms des fonctions situées dans les packages PSQL, bien que cela soit acceptable. Le fait est qu’actuellement vous ne pouvez pas appeler une fonction/procédure à partir de l’espace de noms global dans un package si une fonction/procédure du même nom est déclarée dans le package. Dans ce cas, la procédure/fonction du package sera toujours appelée.
|
CREATE FUNCTION
L’en-tête définit le nom de la fonction stockée, déclare les paramètres d’entrée et le type de la valeur de retour.
Le corps d’une fonction consiste en des déclarations facultatives de variables locales, de sous-routines et de curseurs nommés, et en une ou plusieurs instructions, ou blocs d’instructions, enfermés dans un bloc externe qui commence par le mot-clé BEGIN
et se termine par le mot-clé END
. Les déclarations de variables locales et de curseurs nommés et les instructions internes doivent se terminer par un point-virgule ( ;).