On 20/02/2010 13:28, Nilesh Govindarajan wrote:
> Okay here's my query -
> 
> select c.cid, c.subject, n.title from comments c, node n where c.nid =
> n.nid and c.status != 0;
> 
> This is the query to check list of comments requiring admin approval and
> also the article titles on which this is posted.
> 
> I want to see this result on the screen at psql prompt. Since it may
> return multiple rows, a cursor has to be employed here.
> 
> Now if I employ a cursor here in the function/procedure, how to see the
> results ?

Have you declared your function to return SETOF the row type returned?
if so, you don't have to use a cursor, and the function will simply
return all the rows.

For example, using SQL (not tested):

  create or replace function comments_for_approval()
  returns setof record
  as
  $$
    select c.cid, c.subject, n.title
    from comments c, node n
    where c.nid = n.nid
    and c.status != 0;
  $$
  language sql;

....or something like that. If you use pl/pgsql, then you'll need to use
a different idiom:

  create or replace function comments_for_approval()
  returns setof record
  as
  $$
  declare
    m_rec record;
  begin
    for m_rec in
      select c.cid, c.subject, n.title
      from comments c, node n
      where c.nid = n.nid
      and c.status != 0
    loop
      return next m_rec;
    end loop;
    return;
  end;
  $$
  language plpgsql;

Either way, simply execute the query in psql:

  select * from comments_for_approval();

HTH,

Ray.


-- 
Raymond O'Donnell :: Galway :: Ireland
r...@iol.ie

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to