Heim >Datenbank >MySQL-Tutorial >Wie können Standardwerte das PostgreSQL-Funktionsdesign für variable Eingabeparameter verbessern?

Wie können Standardwerte das PostgreSQL-Funktionsdesign für variable Eingabeparameter verbessern?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-25 03:37:23511Durchsuche

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

Funktionen mit variablen Eingabeparametern

Beim Erstellen gespeicherter Prozeduren (Funktionen) in PostgreSQL besteht die Notwendigkeit, Aktualisierungen von Tabellen basierend auf Eingaben durchzuführen Parameter. Um variable Eingabeparameter zu berücksichtigen, besteht ein Ansatz darin, einen Modusparameter einzuführen. Dieser Modusparameter steuert, welche spezifischen Parameter in der Aktualisierungsabfrage verwendet werden sollen.

Ein alternativer Ansatz besteht jedoch darin, Standardwerte für Funktionsparameter zu verwenden.

Standardwerte

Durch die Definition von Standardwerten für Funktionsparameter können Sie die Funktion vereinfachen und die Lesbarkeit des Codes verbessern. Betrachten Sie das folgende Beispiel:

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

Vorteile von Standardwerten:

  • Vereinfacht den Funktionscode: Keine Notwendigkeit für komplexe CASE-Anweisungen oder bedingte Logik basierend auf Modusparametern.
  • Vermeidet die Benennung Konflikte:Die Verwendung von Unterstrichen als Präfixe für Eingabeparameter verhindert Konflikte mit Spaltennamen.
  • Verbessert die Lesbarkeit:Klarere und intuitivere Funktionslogik.

Verwendung:

Diese aktualisierte Funktion kann mit verschiedenen Anrufen verwendet werden Notationen:

  • Positionale Notation:
SELECT update_site('foo', 'New York');  -- no telephone
  • Benannte Notation:
SELECT update_site(name => 'foo', _telephone => 123);  -- no city
  • Gemischt Notation:
SELECT update_site('foo', _telephone => 123);  -- still no city

Effizienz

Beide Ansätze, die Verwendung von Modusparametern oder Standardwerten, können für einfache Aktualisierungsvorgänge effizient sein. Für komplexere Szenarien können Standardwerte jedoch eine klarere und wartbarere Lösung darstellen.

Wahl des Ansatzes

Die beste Wahl für spezifische Anforderungen. Wenn Spalten als NOT NULL definiert sind, bieten Standardwerte einen einfacheren und schnelleren Ansatz. Für komplexere Szenarien mit SELECT-Abfragen mit unterschiedlichen Ausgaben sollten Sie die Verwendung von VARIADIC oder polymorphen Eingabetypen und dynamischem SQL in Betracht ziehen.

Das obige ist der detaillierte Inhalt vonWie können Standardwerte das PostgreSQL-Funktionsdesign für variable Eingabeparameter verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn