我可以编写自定义函数来处理没有多个函数定义的不同数字类型吗?

问题描述 投票:2回答:3

例如,假设我想在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以及除数是否为零。 ...

postgresql sql-function
3个回答
4
投票

如果使用数字参数和双精度定义函数,则可以将其用于每个数字参数。


0
投票

恐怕不可能:


0
投票

我希望这也会对某人有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.