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 :
Utilisation :
Cette fonction mise à jour peut être utilisée avec divers appels notations :
SELECT update_site('foo', 'New York'); -- no telephone
SELECT update_site(name => 'foo', _telephone => 123); -- no city
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!