将 select 语句作为参数传递给 sql 函数

时间:2021-01-29 12:57:03

标签: sql postgresql

我有功能:

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

如何使用参数选择语句运行我的函数?

1 个答案:

答案 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