【问题标题】:Using one query in a function to fill the variables of another query在函数中使用一个查询来填充另一个查询的变量
【发布时间】:2012-05-22 18:04:17
【问题描述】:

我正在尝试从表 dwh.sgmt_clients 中提取 #(partner_id) 列表,然后将这些数字一一插入到我的函数中变量 $1 所在的大型查询中。然后我希望它们显示为查询。我一辈子都想不通

CREATE OR REPLACE FUNCTION dwh.cu_summary_function()
 RETURNS setof record AS
$$
declare partner_id ALIAS FOR $1
BEGIN
RETURN
select a.partner_id from dwh.sgmt_clients a 
loop
RETURN query
  select
avg(klicount)::int as average_kli, min(klicount) as min_kli, max(klicount) as max_kli,
(select count(kli) from ad_delivery.sgmt_kli_adic a where a.partner_id = $1) as total_kli, 
(select count(distinct(kli))from ad_delivery.sgmt_kli_adic a where a.partner_id = $1) as total_distinct_kli, a.partner_id
from (
select adic, count(kli) as klicount, x.partner_id
from ad_delivery.sgmt_kli_adic x
where x.partner_id = $1
group by adic, x.partner_id
) as a
group by a.partner_id;
end loop
END
$$
 LANGUAGE plpgsql VOLATILE
 COST 100;

【问题讨论】:

  • 您删除并重新创建了问题,而不是改进它。我提供了一个功能齐全的查询。体面的工作被浪费了,我认为自己受到警告。

标签: sql function postgresql variables


【解决方案1】:
CREATE OR REPLACE FUNCTION dwh.cu_summary_function(int) --<<<<<<<<<
RETURNS setof record AS

这个参数定义有点过时了,使用:

CREATE OR REPLACE FUNCTION dwh.cu_summary_function(partner_id int)
RETURNS setof record AS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 2016-04-11
    • 2013-08-02
    • 2016-04-06
    相关资源
    最近更新 更多