是否允许在postgresql中编写一个sql函数来返回多个数据类型?

uujelgoq  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(333)

我正在处理一个兼容性问题,我想创建一个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.

请建议是否有这样的功能,或任何替代我可以尝试实现相同的。

kt06eoxx

kt06eoxx1#

最接近的方法是重载函数:

create or replace function foo(param text)
  returns text
$$
select param;
$$
language sql;

create or replace function foo(param int)
  returns int
$$
select param;
$$
language sql;

create or replace function foo(param date)
  returns int
$$
select param;
$$
language sql;

相关问题