Refatorar uma função PL / pgSQL para retornar a saída de várias consultas SELECT

Eu escrevi uma função que gera um PostgreSQLSELECT consulta bem formada em forma de texto. Agora eu não quero mais dar saída a um texto, mas na verdade rodar o geradoSELECT declaração contra o banco de dados e retornar o resultado - assim como a consulta em si.

O que eu tenho até agora:
CREATE OR REPLACE FUNCTION data_of(integer)
  RETURNS text AS
$BODY$
DECLARE
   sensors varchar(100);   -- holds list of column names
   type    varchar(100);   -- holds name of table
   result  text;           -- holds SQL query
       -- declare more variables

BEGIN
      -- do some crazy stuff

      result := 'SELECT\r\nDatahora,' || sensors ||
      '\r\n\r\nFROM\r\n' || type ||
      '\r\n\r\nWHERE\r\id=' || $1 ||'\r\n\r\nORDER BY Datahora;';

      RETURN result;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION data_of(integer) OWNER TO postgres;

sensors mantém a lista de nomes de coluna para a tabelatype. Aqueles são declarados e preenchidos no decorrer da função. Eventualmente, eles mantêm valores como:

sensors: 'column1, column2, column3'
Exceto porDatahora (timestamp) todas as colunas são do tipodouble precision.

type :'myTable'
Pode ser o nome de uma das quatro tabelas. Cada um tem colunas diferentes, exceto pela coluna comumDatahora.

Definição das tabelas subjacentes.

A variávelsensors vai segurartodos colunas exibidas aqui para a tabela correspondente emtype. Por exemplo: setype épcdmet entãosensors será'datahora,dirvento,precipitacao,pressaoatm,radsolacum,tempar,umidrel,velvento'

As variáveis ​​são usadas para construir umSELECT declaração que é armazenada emresult. Gostar:

SELECT Datahora, column1, column2, column3
FROM   myTable
WHERE  id=20
ORDER  BY Datahora;

No momento, minha função retorna essa declaração comotext. Eu copio e colo e executo no pgAdmin ou via psql. Eu quero automatizar isso, executar a consulta automaticamente e retornar o resultado. Como eu posso fazer isso?

questionAnswers(3)

yourAnswerToTheQuestion