在自訂PostgreSQL 儲存過程時,一種常見的方法是建立一個模式參數來區分不同的更新場景單一功能。然而,最佳解決方案很大程度上取決於手邊任務的具體要求和複雜性。
可變參數輸入參數,如範例中的模式參數,允許將靈活數量的參數傳遞給函數。這種靈活性對於事先未知輸入參數數量的情況特別有用。
但是,由於處理可變數量的參數所需的額外開銷,可變參數的計算成本可能會很高。
對於某些輸入參數可選但不為空的情況,使用函數參數的預設值是一種更簡單、更有效的解決方案。透過設定預設值,您可以避免使用複雜的邏輯來處理遺失的參數。
答案中提供的範例有效地結合了這種方法:
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$;
這個函數更簡單,計算量也更大比可變參數方法強度更低。
如果每個函數的目的是不同的,為每個任務創建單獨的專門函數可以更有效。透過將功能分成不同的函數,您可以針對其特定目的最佳化每個函數。
最佳方法取決於應用程式的特定要求。對於僅存在幾個可選參數的簡單情況,使用函數參數的預設值是一種簡單而有效的解決方案。對於涉及廣泛可選參數的更複雜場景,可變輸入參數或多個專用函數可能更合適。
以上是如何最好地處理 PostgreSQL 函數中的可變長度輸入參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!