繁体   English   中英

如何在嵌套的双美元符号交叉表查询中使用 postgres 参数

[英]How to use a postgres parameter in a nested double dollar sign crosstab query

我无法弄清楚如何在 $fn$ $ct_query_1$ 尝试在 where 子句评估中使用 v_id 中添加字符串插值。

  create or replace function fnX (
       p_id varchar(20)
    ) 
    returns table ( a text, b varchar, c varchar, d varchar, e varchar, f varchar) 
    language plpgsql
    as $fn$
    declare 
    DECLARE v_id varchar := p_id ;
    begin
        return query 
        select a, b, c, d, e, f
    from crosstab(
    $ct_query_1$
  select distinct
     1 as id, s.a, tmp.a
    from 
    "source" s 
    left join
    (
        select distinct 
        tbl.a, tbl.b
        from tableA tbl 
        where tableA.colc = v_id
        ...
        
    ) as tmp on s.source_name = tmp.source
    order by 1, 2 asc;
    $ct_query_1$,
    $a$VALUES ('a'), ('b'), ('c'),('d'), ('e')$a$  
    
    ) as ct (id int, a varchar(20),b varchar(20) , c varchar(20),  d varchar(20), e varchar(20));
    end; 
    $fn$

使用format

SELECT ...
FROM crosstab(
    format(
        $ct_query_1$SELECT ...
                    WHERE tableA.colc = %L
                    ...$ct_query_1$,
        v_id
    ),
    $a$VALUES ('a'), ('b'), ('c'), ('d'), ('e')$a$
)

%L是字符串文字的占位符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM