我正在处理一个兼容性问题,我想创建一个sql函数,它可以根据程序中的条件返回int或varchar。
例如,我有一个名为foo的函数。
CREATE or REPLACE FUNCTION foo(param VARCHAR(100))
-- Which datatype I should use here?
RETURNS SOME_DATATYPE AS
$$
SELECT
CASE UPPER(param)
WHEN 'varchar' THEN CAST((SELECT 'varchar_value') AS varchar)
WHEN 'int' THEN CAST((SELECT 1426598) AS int)
ELSE param||' is not supported.'
END
$$
LANGUAGE SQL;
对于以下查询,我期望得到如下输出。
select pg_typeof(foo('varchar')) from dual;
--I am expecting varchar as output.
select pg_typeof(foo('int')) from dual;
--I am expecting int as output.
请建议是否有这样的功能,或任何替代我可以尝试实现相同的。
1条答案
按热度按时间kt06eoxx1#
最接近的方法是重载函数: