如何执行选择表格中存储的单元格

问题描述 投票:0回答:1

我有一个存储 SOAP 请求的调整表。查询的某些部分是不变的,某些部分是可变的。为了获取变量的值,我需要执行另一个选择,其文本存储在单独的表列中。

如何收集 SOAP 请求文本并获取选择变量的结果?

请看图片。

我期待 pg 函数的示例,它从我的表中收集 SOAP 请求文本。

postgresql postgresql-9.4
1个回答
0
投票

您可以使用 动态 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

%s

然后运行您的查询并将其结果收集到一个数组中,然后将其作为可变参数数组

提供
select assemble_soap_request(1);
assemble_soap_request

2023-09-27T17:51:32

© www.soinside.com 2019 - 2024. All rights reserved.