具有可变输入参数的函数
在 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$;
默认值的优点:
用法:
此更新功能可用于各种调用符号:
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
效率
两种方法,使用模式参数或默认值,可以有效地进行简单的更新操作。然而,对于更复杂的场景,默认值可能提供更清晰、更可维护的解决方案。
方法选择
针对特定要求的最佳选择。如果列定义为 NOT NULL,则默认值提供更简单、更快的方法。对于涉及具有不同输出的 SELECT 查询的更复杂场景,请考虑使用 VARIADIC 或多态输入类型和动态 SQL。
以上是默认值如何改进可变输入参数的 PostgreSQL 函数设计?的详细内容。更多信息请关注PHP中文网其他相关文章!