在定制 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中文网其他相关文章!