我在这个功能中遇到了问题:
create function fruit(proses varchar)
returns table("FRUIT" varchar, "ID" integer, "FRUITCOLOR" varchar) as
-- i think i miss something in this part
$$
begin
if proses = 'view1' then
select fruit, id from table;
elseif proses = 'view2' then
select fruit, id, fruitcolor from table
end if;
end; $$ language plpgsql;
我想使用两个SELECT
查询中的一个,但它不起作用,我认为错误在returns table
,但我不知道究竟在哪里。
答案 0 :(得分:1)
您希望通过函数从表中返回一组行。您的代码大部分都是正确的,但您忘记了函数中的RETURN QUERY
:
create function fruit(proses varchar)
returns table("FRUIT" varchar, "ID" integer, "FRUITCOLOR" varchar) as $$
begin
if proses = 'view1' then
RETURN QUERY select fruit, id, NULL from table;
elseif proses = 'view2' then
RETURN QUERY select fruit, id, fruitcolor from table;
end if;
RETURN;
end; $$ language plpgsql;
请注意,您只能返回单个"类型"来自任何给定的函数,所以如果proses = 'view1'
,您应该返回NULL
作为第三列。
您现在可以像使用任何其他表或视图一样使用您的函数:
SELECT id, fruit FROM fruit('view1');