是否可以创建一个返回记录集的函数,但其中一个字段可以是int或bool,具体取决于condiotion?
这样的事情:
if cond then
return query select x,y, int
else
return query select x,y, bool
end if;
我正在尝试模拟SQL Server sqlvariant类型
的行为答案 0 :(得分:2)
记录可以包含任何类型的列。因此,如果您声明一个函数来返回(setof
)记录,它可以返回任何内容:
create or replace function f(_param int)
returns setof record as $$
begin
if _param = 1 then
return query select 1, true;
else
return query select 1, 'text';
end if;
end;
$$ language plpgsql;
问题是必须在每次使用时声明返回列的类型:
select *
from f(1) s (a int, b boolean);
a | b
---+---
1 | t