pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Andreas <maps.on@gmx.net>
To: pgsql-sql@postgresql.org
Subject: Howto automatically define collumn names for a function result.
Date: Thu, 27 Aug 2009 13:08:34 +0200
Message-ID: <4A966932.6050602@gmx.net> (raw)

Hi,
wouldn't it be great to have functions return  "setof something" as 
result where "something" was determined out of the result of a SELECT 
within the function?
like

CREATE OR REPLACE FUNCTION coffee(integer, timestamp, timestamp)
  RETURNS SETOF
AS
$BODY$
    SELECT staff_id, name, room, COUNT(coffee_id) AS cupcount
     FROM staff  JOIN coffee_log ON staff_fk = staff_id
     WHERE (staff_id = $1) AND (coffee_time BETWEEN $2 AND $3)
  GROUP BY staff_id, name, room
  ORDER BY name;
$BODY$
  LANGUAGE 'sql' STABLE

There the SELECT dumps a constant set of collumns where as far as I know 
have to be defined as a type to make SETOF happy or define the names 
whenever I call the function which would be tedious.

Actually this is a pretty simple example of some reports I need to produce.
They have around 60 collumns and there is also an aggregate and 
filtering on an id as well as 2 timestamps.
Since the aggregate depends on id and timestamps too, it is no solution 
to build a view and select from that within the function.



view thread (2+ messages)  latest in thread

Message-ID: <4A966932.6050602@gmx.net>
Permalink:  ../4A966932.6050602@gmx.net/
Also on:    postgresql.org/message-id/4A966932.6050602@gmx.net

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: maps.on@gmx.net
  Subject: Re: Howto automatically define collumn names for a function result.
  In-Reply-To: <4A966932.6050602@gmx.net>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox