我有一个存储 SOAP 请求的调整表。查询的某些部分是不变的,某些部分是可变的。为了获取变量的值,我需要执行另一个选择,其文本存储在单独的表列中。
如何收集 SOAP 请求文本并获取选择变量的结果?
请看图片。
我期待 pg 函数的示例,它从我的表中收集 SOAP 请求文本。
您可以使用 动态 SQL 来评估
high_val
中的查询并组装完整的主体:demo
create function assemble_soap_request(p_id int)
returns text language plpgsql as $function_body$
DECLARE
var_formula text;
var_result text;
var_results text[];
full_soap_request text:='';
BEGIN
select string_agg(low_val||case when attr_id='VAR' then '%s' else '' end
,E'\n' order by sel_num)
from soap_request where req_id=p_id
into full_soap_request;
for var_formula in select high_val
from soap_request where attr_id='VAR' and req_id=p_id
order by sel_num
loop
execute var_formula into var_result;
var_results:=var_results||var_result;
end loop;
select format(full_soap_request,VARIADIC var_results) into full_soap_request;
return full_soap_request;
END $function_body$;
%s
占位符构建请求主体,无论“变量”需要去哪里:
select string_agg(low_val||case when attr_id='VAR' then '%s' else '' end
,E'\n' order by sel_num)
from soap_request;
字符串_agg |
---|
然后运行您的查询并将其结果收集到一个数组中,然后将其作为可变参数数组
提供select assemble_soap_request(1);
assemble_soap_request |
---|