FirebirdSQL logo
 TRIGGERFUNCTION 

CREATE PROCEDURE

Objectif

Créez une nouvelle procédure stockée.

Disponible en

DSQL, ESQL

Syntaxe
CREATE PROCEDURE procname [(<inparam> [, <inparam> ...])]
[ RETURNS (<outparam> [, <outparam> ...]) ]
<routine body>

<inparam> ::= <param_decl> [{= | DEFAULT} <value>]

<outparam>  ::=  <param_decl>

<value> ::=  {literal | NULL | context_var}

<param_decl> ::= paramname <type> [NOT NULL] [COLLATE collation]

<type> ::= <datatype> | [TYPE OF] domain_name | 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-spec>

<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 PROCEDURE
Paramètre Description

procname

Le nom de la procédure stockée.Peut contenir jusqu’à 63 caractères.

inparam

Description du paramètre d’entrée.

outparam

Description du paramètre de sortie.

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 ou de sortie de la procédure.Peut contenir jusqu’à 63 caractères.Le nom du paramètre doit être unique parmi les paramètres d’entrée et de sortie de la procédure, ainsi que parmi ses variables locales.

extbody

Le corps de la procédure externe.Une 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.En général, le nom de l’UDR est spécifié.

datatype

Le 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

Nom de la colonne de la table ou de la vue.

L’instruction CREATE PROCEDURE crée une nouvelle procédure stockée.Le nom de la procédure stockée doit être unique parmi les noms de toutes les procédures stockées, tables et vues de la base de données.

Note

Il est également souhaitable que le nom de la procédure stockée soit unique parmi les noms des procédures des paquets PSQL, bien que cela soit autorisé.Le fait est qu’actuellement vous ne pouvez pas appeler une fonction/procédure de l’espace de nom global dans un paquet si une fonction/procédure du même nom est déclarée dans le paquet.Dans ce cas, la fonction/procédure du paquet sera toujours appelée.

CREATE PROCEDURE est une déclaration composite composée d’un en-tête et d’un corps.

L’en-tête définit le nom de la procédure stockée et déclare les paramètres d’entrée et de sortie s’ils doivent être renvoyés par la procédure.

Le corps de la procédure est constitué de déclarations facultatives de variables locales, de sous-routines et de curseurs nommés, et d’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 les curseurs nommés ainsi que les instructions internes doivent se terminer par un point-virgule (“;”).

Opérateur de terminaison

Certains éditeurs d’instructions SQL — notamment l’utilitaire isql de la suite Firebird,et peut-être certains éditeurs tiers - utilisent une convention interne qui exige que toutes les déclarations soient terminées par un point-virgule.

Cela crée un conflit avec la syntaxe PSQL lors du codage dans ces environnements.Si vous n’êtes pas familier avec ce problème et sa solution, veuillez étudier les détails dans le chapitre PSQL de la brochuretitré Changer la terminaison dans `isql.

Paramètres

Chaque paramètre a un type de données.Il est également possible de spécifier une restriction NOT NULL pour un paramètre, interdisant ainsi de lui passer une valeur NULL.

Pour un paramètre de type chaîne de caractères, il est possible de spécifier l’ordre de tri en utilisant la commande suivante COLLATE.

Paramètres d’entrée

Les paramètres d’entrée sont placés entre parenthèses après le nom de la procédure stockée.Ils sont transmis à la procédure par valeur, c’est-à-dire que toute modification des paramètres d’entrée dans la procédure n’aura aucun effet sur les valeurs de ces paramètres dans le programme appelant.

Les paramètres d’entrée peuvent avoir une valeur par défaut.Les paramètres pour lesquels des valeurs sont définies doivent être placés à la fin de la liste des paramètres.