[英]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.