例如,假设我想在 postgres 中编写一个自定义函数来安全地除以两个数字——即它应该检查任何一个参数是否为空以及除数是否为零。它应该优雅地处理这些错误情况,否则返回预期的商。
只要两个参数是相同的数字类型(例如,两个整数、两个数字等),当前代码就可以正常工作。
CREATE OR REPLACE FUNCTION safe_divide(anyelement, anyelement) RETURNS numeric AS $$
SELECT CASE
WHEN $1 IS NULL OR $2 IS NULL OR $2 = 0 THEN NULL
ELSE $1::numeric / $2::numeric
END;
$$ LANGUAGE SQL;
我的问题:有没有办法编写这个函数,以便我可以提供不同的数字类型?
我想避免:
调用函数时需要显式转换参数(例如
safe_divide(x::numeric, y::numeric)
)需要为每种可能的数据类型定义函数
谢谢!