Maison >base de données >tutoriel mysql >Comment les valeurs par défaut peuvent-elles améliorer la conception des fonctions PostgreSQL pour les paramètres d'entrée variables ?

Comment les valeurs par défaut peuvent-elles améliorer la conception des fonctions PostgreSQL pour les paramètres d'entrée variables ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-25 03:37:23516parcourir

How Can Default Values Improve PostgreSQL Function Design for Variable Input Parameters?

Fonctions avec paramètres d'entrée variables

Lors de la création de procédures stockées (fonctions) dans PostgreSQL, il est nécessaire de gérer les mises à jour des tables en fonction de l'entrée paramètres. Pour s'adapter aux paramètres d'entrée variables, une approche consiste à introduire un paramètre de mode. Ce paramètre de mode contrôle les paramètres spécifiques à utiliser dans la requête de mise à jour.

Cependant, une approche alternative consiste à utiliser des valeurs par défaut pour les paramètres de fonction.

Valeurs par défaut

En définissant des valeurs par défaut pour les paramètres de fonction, vous pouvez simplifier la fonction et améliorer la lisibilité du code. Prenons l'exemple suivant :

CREATE OR REPLACE FUNCTION update_site(_name text, _city text DEFAULT NULL, _telephone int DEFAULT NULL)
RETURNS int
LANGUAGE plpgsql AS
$func$
BEGIN
   IF _city IS NULL AND _telephone IS NULL THEN
      RAISE WARNING 'At least one not-null input value required!';
      RETURN;  -- nothing to update
   END IF;

   UPDATE "Sites"
   SET    "City"      = COALESCE(_city, "City")
        , "Telephone" = COALESCE(_telephone, "Telephone")
   WHERE  "SiteName"  = _name;
END
$func$;

Avantages des valeurs par défaut :

  • Simplifie le code de fonction : Pas besoin d'instructions CASE complexes ou une logique conditionnelle basée sur les paramètres de mode.
  • Évite de nommer conflits : L'utilisation de préfixes de traits de soulignement pour les paramètres d'entrée évite les conflits avec les noms de colonnes.
  • Améliore la lisibilité : Logique de fonction plus claire et plus intuitive.

Utilisation :

Cette fonction mise à jour peut être utilisée avec divers appels notations :

  • Notation positionnelle :
SELECT update_site('foo', 'New York');  -- no telephone
  • Notation nommée :
SELECT update_site(name => 'foo', _telephone => 123);  -- no city
  • Mixte Notation :
SELECT update_site('foo', _telephone => 123);  -- still no city

Efficacité

Les deux approches, utilisant des paramètres de mode ou des valeurs par défaut, peuvent être efficaces pour des opérations de mise à jour simples. Cependant, pour des scénarios plus complexes, les valeurs par défaut peuvent fournir une solution plus claire et plus maintenable.

Choix d'approche

Le meilleur choix zależy sur des exigences spécifiques. Si les colonnes sont définies comme NOT NULL, les valeurs par défaut offrent une approche plus simple et plus rapide. Pour des scénarios plus complexes impliquant des requêtes SELECT avec des sorties variables, envisagez d'utiliser des types d'entrée VARIADIC ou polymorphes et du SQL dynamique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn