我有功能:
create or replace function provide_city_name(id_offer int)
returns varchar
language plpgsql
as
$$
declare
city_record record;
begin
select id, type, parent_id, name
into city_record
from location
where id = id_offer;
if city_record.type < 6 then
return city_record.name;
else
return provide_city_name(city_record.parent_id);
end if;
end;
$$;
我想要做的是将 SELECT 结果作为函数的参数传递。
我的选择语句:select offer_id from offers limit 5
我的结果是:
offer_id
1 146
2 147
3 148
4 149
5 150
我想通过我的函数转换它:
select provide_city_name(select offer_id from offers limit 5)
结果应该是这样的
offer_id
1 New York
2 Las Vegas
3 London
4 New York
5 Moscow
如何使用参数选择语句运行我的函数?
答案 0 :(得分:1)
在 Postgres 9.3 或更高版本中,您可以尝试使用 LATERAL join:
SELECT o.id, o.name
FROM offers O
LEFT JOIN LATERAL provide_city_name(o.offer_id) f ON true