例如,假设我想在postgres中编写一个自定义函数,该函数可以安全地将两个数相除-即它应检查两个参数中的任何一个是否为null以及除数是否为零。它应该适当地处理这些错误情况,否则返回期望的商。
只要两个参数的数字类型相同(例如,两个整数,两个数字等),当前代码就可以正常工作
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)
)时需要显式转换参数)>
需要为每种可能的数据类型定义函数
谢谢!
例如,假设我想在postgres中编写一个自定义函数,该函数可以安全地将两个数相除-即它应检查两个参数中的任何一个是否为null以及除数是否为零。 ...
如果使用数字参数和双精度定义函数,则可以将其用于每个数字参数。
恐怕不可能:
我希望这也会对某人有所帮助。