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:
Verwendung:
Diese aktualisierte Funktion kann mit verschiedenen Anrufen verwendet werden Notationen:
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
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!