Refaktuj funkcję PL / pgSQL, aby zwrócić dane wyjściowe różnych zapytań SELECT

Napisałem funkcję, która wysyła PostgreSQLSELECT zapytanie dobrze ukształtowane w formie tekstowej. Teraz nie chcę już wysyłać tekstu, ale faktycznie uruchomić wygenerowaneSELECT instrukcja do bazy danych i zwraca wynik - tak jak samo zapytanie.

Co mam do tej pory:
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 przechowuje listę nazw kolumn dla tabelitype. Te są zadeklarowane i wypełnione w trakcie funkcji. W końcu posiadają wartości takie jak:

sensors: 'column1, column2, column3'
Z wyjątkiemDatahora (timestamp) wszystkie kolumny są typudouble precision.

type :'myTable'
Może być nazwą jednego z czterech stołów. Każdy ma inne kolumny, z wyjątkiem wspólnej kolumnyDatahora.

Definicja tabel podstawowych.

Zmiennasensors zatrzyma sięwszystko kolumny wyświetlane tutaj dla odpowiedniej tabeli wtype. Na przykład: Jeślitype jestpcdmet następniesensors będzie'datahora,dirvento,precipitacao,pressaoatm,radsolacum,tempar,umidrel,velvento'

Zmienne są używane do budowaniaSELECT oświadczenie, które jest przechowywane wresult. Lubić:

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

W tej chwili moja funkcja zwraca tę instrukcję jakotext. Kopiuję i wklejam i wykonuję go w pgAdmin lub psql. Chcę to zautomatyzować, uruchomić zapytanie automatycznie i zwrócić wynik. Jak mogę to zrobić?

questionAnswers(3)

yourAnswerToTheQuestion