Table des matières
Utilisation de paramètres d'entrée de longueur variable dans les fonctions
Option 1 : Utilisation des paramètres d'entrée variadiques
Option 2 : Fonction à valeur par défaut unique
Option 3 : Fonctions spécialisées multiples
Conclusion
Maison base de données tutoriel mysql Comment gérer au mieux les paramètres d'entrée de longueur variable dans les fonctions PostgreSQL ?

Comment gérer au mieux les paramètres d'entrée de longueur variable dans les fonctions PostgreSQL ?

Dec 18, 2024 am 10:57 AM

How to Best Handle Variable-Length Input Parameters in PostgreSQL Functions?

Utilisation de paramètres d'entrée de longueur variable dans les fonctions

Dans le but de personnaliser les procédures stockées PostgreSQL, une approche courante consiste à créer un paramètre de mode pour différencier les différents scénarios de mise à jour dans une seule fonction. Cependant, la solution optimale dépend en grande partie des exigences spécifiques et de la complexité de la tâche à accomplir.

Option 1 : Utilisation des paramètres d'entrée variadiques

Paramètres d'entrée variadiques, comme le paramètre de mode dans l'exemple, permettre qu'un nombre flexible d'arguments soient transmis à la fonction. Cette flexibilité est particulièrement utile dans les situations où le nombre de paramètres d'entrée n'est pas connu à l'avance.

Cependant, les paramètres variadiques peuvent être coûteux en termes de calcul en raison de la surcharge supplémentaire requise pour traiter le nombre variable d'arguments.

Option 2 : Fonction à valeur par défaut unique

L'utilisation de valeurs par défaut pour les paramètres de fonction est une solution plus simple et plus efficace pour les cas où certains paramètres d'entrée sont facultatifs mais non nuls. En définissant des valeurs par défaut, vous évitez le besoin d'une logique complexe pour gérer les paramètres manquants.

L'exemple fourni dans la réponse intègre efficacement cette approche :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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$;

Copier après la connexion

Cette fonction est plus simple et plus informatique. moins intensive que l'approche variadique.

Option 3 : Fonctions spécialisées multiples

Dans les cas où le but de chaque fonction est distinct, créer des fonctions spécialisées distinctes pour chaque tâche peuvent être plus efficaces. En séparant les fonctionnalités en fonctions distinctes, vous pouvez optimiser chaque fonction pour son objectif spécifique.

Conclusion

La meilleure approche dépend des exigences spécifiques de votre application. Pour les cas simples où seuls quelques paramètres facultatifs existent, l’utilisation des valeurs par défaut pour les paramètres de fonction est une solution simple et efficace. Pour des scénarios plus complexes impliquant un large éventail de paramètres facultatifs, des paramètres d'entrée variadiques ou plusieurs fonctions spécialisées peuvent être plus appropriés.

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 de ce site Web
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

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Réduisez l'utilisation de la mémoire MySQL dans Docker Réduisez l'utilisation de la mémoire MySQL dans Docker Mar 04, 2025 pm 03:52 PM

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE? Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE? Mar 19, 2025 pm 03:51 PM

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée Mar 04, 2025 pm 04:01 PM

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Qu'est-ce que Sqlite? Aperçu complet Qu'est-ce que Sqlite? Aperçu complet Mar 04, 2025 pm 03:55 PM

Qu'est-ce que Sqlite? Aperçu complet

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin) Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin) Mar 04, 2025 pm 03:54 PM

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape Mar 04, 2025 pm 03:49 PM

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)? Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)? Mar 18, 2025 pm 12:00 PM

Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)?

Comment configurer le cryptage SSL / TLS pour les connexions MySQL? Comment configurer le cryptage SSL / TLS pour les connexions MySQL? Mar 18, 2025 pm 12:01 PM

Comment configurer le cryptage SSL / TLS pour les connexions MySQL?

See all articles