我编写了一个接收和返回记录的 SQL 函数。我需要在 from 子句中使用收到的记录。我正在使用unnest(array[the_variable])
。
是否有特定的功能或结构来执行此操作?(类似的东西record_to_recordset(the_variable)
)
这是我的例子:
create type calculate_info_type as (super_code text, super_name text);
create function calculate_info(p_country country)
returns calculate_info_type
language SQL as
$SQL$
SELECT super_code, super_name
FROM unnest(array[p_country]), -- <=== HERE!!
lateral (select
prefix is not null as has_prefix
) g1,valores que tenga la tabla
lateral (select
case has_prefix when true then iso||'-'||prefix else iso end as super_code,
case has_prefix when true then name else name||' without phone prefix' end as super_name
) g2
$SQL$;
我在这里放了一个完整的运行示例:https ://rextester.com/XIRSW33377
简短回答 (已编辑)
你可以写
FROM (select p_country.*) some_alias
而不是FROM unnest(array[p_country])
修正最少的问题代码:https ://rextester.com/UGKJR74935
原始答案 (有很多有用的建议)
看起来你想要这样的东西:
但你根本不需要
from
:concat_ws
如果为空,将仅返回iso
字段中的值。prefix
您不需要
lateral
使用该功能:您更新的示例:https ://rextester.com/GVLK52206