gpt4 book ai didi

postgresql - 在 Postgres 中创建函数时出错

转载 作者:行者123 更新时间:2023-12-04 09:36:04 26 4
gpt4 key购买 nike

我正在尝试创建一个 postgres 函数,它只返回用户在数据库中拥有的 friend 。它应该只返回所有用户 friend 的名字和姓氏。但是,我不断收到此错误:[42601] ERROR: query has no destination for result data这对我来说没有意义,因为我要返回一个包含所有名字和姓氏的表格。
这是我的功能。有谁知道为什么会这样?我在其他任何地方都找不到答案。

create or replace function getFriends(pEmail text)
returns TABLE(pkUser int, FirstName text, LastName text)
language plpgsql
as
$$
declare pk int;
begin
select "pkUser" into pk from users where "Email"=pEmail;

select
"pkUser", "FirstName", "LastName"
from users u
inner join friends f on u."pkUser" = f."User2ID"
where f."User1ID"=pk;

select "pkUser", "FirstName", u."LastName"
from users u
inner join friends f on u."pkUser" = (f."User1ID")
where f."User2ID"=pk;

end
$$;

最佳答案

你的 plpgsql 函数应该是 return query有效。
但在这里我认为你可以用直接查询做你想做的事情,所以只需切换到 sql 和:

create or replace function getFriends(pEmail text)
returns table(pkUser int, FirstName text, LastName text)
language sql
as
$$
select u2."pkUser", u2."FirstName", u2."LastName"
from users u1
inner join friends f
on u1."pkUser" in (f."User1ID", f."User2ID")
inner join users u2
on u2."pkUser" in (f."User1ID", f."User2ID")
and u2."pkUser" <> u1."pkUser"
where u1."Email" = pEmail;
$$
这将选择其电子邮件作为函数参数的用户的记录,然后搜索所有相应的 friend (无论是在 User1IDUser2ID 中),最后返回 friend 用户记录。

关于postgresql - 在 Postgres 中创建函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62580099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com