L3 Info : SGBD
 
◃  Ch. 10 PL/pgSQL  ▹
 

Fonctions et Procédures

  • Depuis la version 11, Postgres intègre distingue fonction et procédure
  • Les fonctions sont associées à un type de retour :
    CREATE [OR REPLACE] FUNCTION nomFonc([[nom] type]*) RETURNS (type|void) AS $$
    ...
    $$ LANGUAGE plpgsql;
    
    • $$ est le délimiteur de début et fin de définition de fonction.
    • Chaque paramètre anonyme peut être identifié par $n où n est le numéro d'ordre du paramètre.
    • Avant la version 8.0 il fallait explicitement déclarer l'alias : nom ALIAS FOR $n;
    • Exemple :
      CREATE FUNCTION prixTTC(prixHT real, real) RETURNS real AS $$
      DECLARE
         taux ALIAS FOR $2;
      BEGIN
         RETURN prixHT * (1+taux);
      END;
      $$ LANGUAGE plpgsql;
    • Exécution :
      SELECT prixttc(83.34,0.20);
       prixttc
      ---------
       100.008
      (1 row)
  • Les procédures sont definies sur le même modèle (sans déclaration de type de retour) :
    CREATE [OR REPLACE] PROCEDURE nomFonc([[nom] type]*) AS $$
    ...
    $$ LANGUAGE plpgsql;