我正在寻找一种方式来创建一个icase()
与任何第二个和第三个参数兼容的数据类型的工作功能。
我试着在Postgres的9.4:
CREATE OR REPLACE FUNCTION public.icase(
cond1 boolean,
res1 anyelement,
conddefault anyelement)
RETURNS anyelement AS
' SELECT CASE WHEN $1 THEN $2 ELSE $3 END; '
LANGUAGE sql IMMUTABLE;
但:
select icase( true, 1.0, 0 )
导致错误:
ERROR: function icase(boolean, numeric, integer) does not exist LINE 9: select icase( true, 1.0, 0 ) ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.
如何解决这个问题的9.1+,使第二和第三个参数可以是int或数字?
如果两个第二和第三参数是这个方法可以被称为text
, char(n)
, date
, numeric
或int
类型。