函数根据参数从两个查询之一返回记录集
Function returning set of records from one of two queries depending on argument
我在这个函数中遇到了问题:
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
但我不知道确切的位置。
您似乎想通过一个函数 return 来自 table 的一组行。您的代码大部分是正确的,但是您忘记了从函数 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;
请注意,您只能从任何给定函数中 return 一个 "type",因此在 proses = 'view1'
的情况下,您应该 return NULL
作为第三列。
您现在可以像使用任何其他 table 或视图一样使用您的函数:
SELECT id, fruit FROM fruit('view1');
我在这个函数中遇到了问题:
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
但我不知道确切的位置。
您似乎想通过一个函数 return 来自 table 的一组行。您的代码大部分是正确的,但是您忘记了从函数 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;
请注意,您只能从任何给定函数中 return 一个 "type",因此在 proses = 'view1'
的情况下,您应该 return NULL
作为第三列。
您现在可以像使用任何其他 table 或视图一样使用您的函数:
SELECT id, fruit FROM fruit('view1');