name

le nom (éventuellement qualifié de schéma) de la procédure à créer.

argmode

Le mode d’un argument: IN, INOUT ou VARIADIC. Si elle est omise, la valeur par défaut est IN. (OUT les arguments ne sont actuellement pas pris en charge pour les procédures. Utilisez INOUT à la place.)

argname

Le nom d’un argument.,

argtype

le ou les types de données des arguments de la procédure(éventuellement qualifiés de schéma), le cas échéant. Les types d’arguments peuvent être des types base, composite ou domain, ou peuvent référencer le type d’une colonne de table.

selon le langage d’implémentation, il peut également être autorisé à spécifier des « pseudo-types” tels quecstring. Les Pseudo-types indiquent que le type d’argument réel est soit incomplètement spécifié, soit en dehors de l’ensemble des types de données SQL ordinaires.

Le type d’une colonne est référencé par écrit table_name.,column_name%TYPE. L’utilisation de cette fonctionnalité peut parfois aider à faire une procédure indépendante des changements à la définition d’une table.

default_expr

Une expression pour être utilisé comme valeur par défaut si le paramètre n’est pas spécifié. L’expression doit être coercitive au type d’argument du paramètre. Tous les paramètres d’entrée suivant un paramètre avec une valeur par défaut doivent également avoir des valeurs par défaut.

lang_name

nom de la langue dans laquelle la procédure est implémentée., Il peut être sql, c, internal, ou le nom d’un utilisateur défini par langue de la procédure, par exemple, la balise plpgsql. Enfermer le nom entre guillemets simples est obsolète et nécessite une casse correspondante.

TRANSFORM { FOR TYPE type_name } }

Les listes qui transforment un appel à la procédure doivent s’appliquer. Transformations convertissez entre les types SQL et les types de données spécifiques à la langue; voir Créer une transformation. Les implémentations de langage procédural ont généralement une connaissance codée en dur des types intégrés, donc ceux-ci n’ont pas besoin d’être répertoriés ici., Si une implémentation de langage procédural ne sait pas comment gérer un type et qu’aucune transformation n’est fournie, elle reviendra à un comportement par défaut pour convertir les types de données, mais cela dépend de l’implémentation.

SECURITY INVOKER
SECURITY DEFINER

SECURITY INVOKER indique que la procédure doit être exécuté avec les privilèges de l’utilisateur qui l’appelle. C’est la valeur par défaut. SECURITY DEFINER spécifie que la procédure doit être exécutée avec les privilèges de l’utilisateur qui la possède.,

le mot clé EXTERNAL est autorisé pour la conformité SQL, mais il est facultatif car, contrairement à SQL, cette fonctionnalité s’applique à toutes les procédures, pas seulement aux procédures externes.

une procédureSECURITY DEFINER ne peut pas exécuter d’instructions de contrôle de transaction (par exemple,COMMIT EtROLLBACK, selon la langue).,

configuration_parameter
value

La clauseSET fait que le paramètre de configuration spécifié est défini sur la valeur spécifiée lorsque la procédure est entrée, puis restauré à sa valeur antérieure lorsque la procédure se termine. SET FROM CURRENT enregistre la valeur du paramètre en cours lorsque CREATE PROCEDURE est exécuté comme valeur à appliquer lors de la saisie de la procédure.,

Si une clauseSET est attachée à une procédure, alors les effets d’une commandeSET LOCAL exécutée dans la procédure pour la même variable sont limités à la procédure: la valeur antérieure du paramètre de configuration est toujours restaurée à la sortie de la procédure., Cependant, une commande SET ordinaire (sans LOCAL) remplace la clause SET, tout comme elle le ferait pour une commande SET LOCAL précédente: les effets d’une telle commande persisteront après la sortie de la procédure, à moins la transaction en cours est annulée.

Si une clauseSET est attachée à une procédure, cette procédure ne peut pas exécuter d’instructions de contrôle de transaction (par exemple,COMMIT EtROLLBACK, selon la langue).,

Voir SET et Chapitre 19 pour plus d’informations sur les noms et valeurs de paramètres autorisés.

definition

une constante de chaîne définissant la procédure; la signification dépend de la langue. Il peut s’agir d’un nom de procédure interne, du chemin d’accès à un fichier objet, d’une commande SQL ou de texte dans un langage procédural.

Il est souvent utile d’utiliser les guillemets en dollars (voir Section 4.1.2.4) pour écrire la chaîne de définition de procédure, plutôt que la syntaxe de guillemets simples normale. Sans Cotation en dollars, les guillemets simples ou les barres obliques inverses dans la définition de la procédure doivent être échappés en les doublant.,

obj_file,link_symbol

Cette forme de la clauseAS est utilisée pour les procédures en langage C chargeables dynamiquement lorsque le nom de la procédure dans le code source en langage C n’est pas le même que le nom de la procédure SQL. La chaîne obj_file est le nom du fichier de bibliothèque partagée contenant la procédure c compilée, et est interprétée comme pour la commande LOAD. La chaîne link_symbol est le symbole de lien de la procédure, c’est-à-dire le nom de la procédure dans le code source du langage C., Si le symbole de lien est omis, il est supposé être le même que le nom de la procédure SQL en cours de définition.

lorsqu’ils sont répétésCREATE PROCEDURE les appels se réfèrent au même fichier objet, le fichier n’est chargé qu’une seule fois par session. Pour décharger et recharger le fichier (peut-être pendant le développement), démarrez une nouvelle session.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *