例として、postgres で 2 つの数値を安全に除算するカスタム関数を書きたいとします。つまり、どちらかの引数が null であるか、除数がゼロであるかをチェックする必要があります。これらのエラー条件を適切に処理する必要があり、それ以外の場合は期待される商を返す必要があります。
現在のコードは、2 つの引数が同じ数値型 (両方とも整数、両方とも数値など) である限りうまく機能します。
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)
)可能なすべてのデータ型に対して関数を定義する必要がある
ありがとう!