Por que esta função retorna uma tabela vazia (enquanto executa a consulta simples da linha de comando retorna valores diferentes):
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;
Eu até tentei usar execute
com ||
sem sorte.
Eu acho que você quer que o
RETURN QUERY EXECUTE ... USING
contexto não importa:EXECUTE .. USING
não funcionará no psql, ele não anexará o resultado ao valor de retorno das funções.Isso retorna uma tabela vazia e provavelmente deve acionar um aviso quando você cria essa função.
Isso retorna uma tabela com uma linha, com uma coluna int
a
com um valor de42
,Veja também,