为什么这个函数返回一个空表(从命令行运行普通查询返回不同的值):
CREATE OR REPLACE FUNCTION get_area_values (_tbl regclass, _column text, indicator_id integer) RETURNS
TABLE (indicator integer, postcode text, date date, value double precision) AS $$
BEGIN
execute format(
'WITH ad AS (select distinct area, district from postcode_lookup)'
|| ' select $1 as indicator, ad.area as postcode, t.date, sum(t.%I) as value'
|| ' from %I as t'
|| ' join ad on t.postcode = ad.district group by ad.area, t.date', _column, _tbl)
USING indicator_id;
END
$$ LANGUAGE plpgsql;
我什至尝试使用execute
with ,||
但没有任何运气。
我认为你想要
RETURN QUERY EXECUTE ... USING
的上下文无关紧要:EXECUTE .. USING
不会在 psql 中工作,它不会将结果附加到函数的返回值。这将返回一个空表,并且在创建此类函数时可能会触发警告。
这将返回一个包含一行的表,其中一个 int 列
a
的值为42
,也可以看看,