sql - 将 select 语句作为参数传递给 sql 函数
问题描述
我有功能:
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
如何使用参数选择语句运行我的函数?
解决方案
在 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
推荐阅读
- python - 在 Python 中将 4D 数据绘制为分层热图
- javascript - 为什么
- amazon-web-services - 每次代码部署时如何创建新目录
- javascript - 如何使用 HTML 按钮和 PHP 创建目录
- xcode - IOS 错误下载配置文件
- angular7 - 角度弹性布局,网格大小未按预期工作
- wix - 如何根据 MSI WIX 中选择的功能更新配置文件值?
- java - OnPreferenceTreeClickListener 与 OnPreferenceClickListener 之间的区别
- azure-cosmosdb - Azure CosmosDB:按天获取上个月的文档
- android - 绘制单个应用程序