Créer une procédure stockée dans Azure Database pour PostgreSQL

Effectué

La création d’une procédure stockée pour une tâche spécifique présente de nombreux avantages, notamment l’extension des fonctionnalités de votre base de données Azure pour PostgreSQL. Utilisez une procédure stockée lorsque vous souhaitez :

  • Développez et testez du code complexe à un seul endroit, puis appelez-le où qu’il soit nécessaire.
  • Exécuter le code efficacement. Les procédures stockées qui retournent le même résultat sont plus efficaces, car elles sont précompilées et stockées dans le serveur Azure Database pour PostgreSQL.
  • Rendre votre code plus facile à lire.
  • Inclure la gestion des erreurs dans une transaction.
  • Masquer la complexité auprès des utilisateurs.

En outre, Azure Database pour PostgreSQL prend en charge de nombreux langages, notamment :

  • SQL
  • PL/pgSQL
  • PL/Python
  • PL/Perl et PL/PerlU
  • PL/Python
  • PL/Tcl et PL/TCLU

SQL est le langage natif de PostgreSQL et fonctionne le mieux avec l’optimiseur.

Une procédure stockée est créée avec les mots clés CREATE PROCEDURE. Vous pouvez également utiliser CREATE OR REPLACE PROCEDURE pour créer une nouvelle procédure ou remplacer une procédure avec le même nom.

Incluez un nom de schéma pour créer la procédure dans un schéma spécifique. Sinon, il est créé dans le schéma actuel. Le nom de la procédure doit être unique dans le schéma, y compris les types d’arguments d’entrée. Vous pouvez toutefois surcharger les noms de procédures en attribuant le même nom à une procédure ou une fonction avec différents types d’arguments.

L’utilisateur qui crée la procédure est le propriétaire de la procédure. Vous devez également spécifier le langage.

Les procédures prennent les paramètres suivants :

  • name : incluez éventuellement le nom du schéma.
  • argmode : mode de l’argument. Peut être IN, INOUT ou VARIADIC. La valeur par défaut est IN. OUT n’est pas pris en charge ; utilisez INOUT à la place. VARDIADIC est un nombre non défini d’arguments d’entrée du même type et doit être le dernier argument d’entrée.
  • argname : nom de l’argument.
  • argtype : type de données de l’argument.
  • default_expr : expression par défaut (du même type) à utiliser si le paramètre n’est pas spécifié. Les paramètres d’entrée qui suivent un paramètre avec une valeur par défaut doivent également avoir des valeurs par défaut.
  • lang_name : langage utilisé pour écrire la procédure. Peut être sql, c, interne ou le nom d’un langage procédural défini par l’utilisateur, par exemple plpgsql.

Dans l’exemple suivant, une procédure stockée appelée myprocedure est créée, et prend les paramètres d’entrée a et b. IN est la valeur par défaut pour les paramètres. Nous n’avons donc pas besoin de les identifier explicitement comme paramètres d’entrée. Lorsque la procédure stockée est appelée, les valeurs affectées à ces paramètres sont insérées dans mytable.

CREATE PROCEDURE myprocedure (a integer, b integer)
    LANGUAGE SQL
    AS $$
        INSERT INTO mytable VALUES (a, b);
    $$;

Le symbole $$ est utilisé pour démarrer et terminer une chaîne. Vous pouvez également utiliser des guillemets simples, mais cela peut entraîner des problèmes avec d’autres langages de programmation, $$ est donc préférable.