From: | Vitaly Belman <vitalyb(at)gmail(dot)com> |
---|---|
To: | Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com> |
Cc: | PostgreSQL general <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Returning 0 rows from a PL/PGSQL |
Date: | 2005-02-20 21:59:26 |
Message-ID: | fa96e3c605022013591458c0f9@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Good thinking, it works :)
Thanks.
On Sat, 19 Feb 2005 16:53:52 -0800 (PST), Stephan Szabo
<sszabo(at)megazone(dot)bigpanda(dot)com> wrote:
> On Sun, 20 Feb 2005, Vitaly Belman wrote:
>
> > I have the following plpgsql function:
> >
> > CREATE OR REPLACE FUNCTION public."temp"(int4)
> > RETURNS public.books AS
> > $BODY$DECLARE
> > old_book books%rowtype;
> > BEGIN
> > select * into old_book from books
> > where book_id = var_book_id;
> >
> > IF FOUND = false THEN
> > return null;
> > ELSE
> > return old_book;
> > END IF;
> > END;$BODY$
> > LANGUAGE 'plpgsql' VOLATILE;
> >
> > If the function finds a book with the given ID, it returns its row, if
> > it doesn't, it should return no rows at all (naturally it is
> > simplified version of what I need). In practice, however, it returns
> > either a regular row, or a regular row with all fields set to NULL.
>
> I think you'd need to make the function a set returning one in order to
> potentially return no rows (which I think would involve making it returns
> setof public.books, doing a return next old_book when found=true and
> nothing in the false case and putting a return at the end).
>
>
--
ICQ: 1912453
AIM: VitalyB1984
MSN: tmdagent(at)hotmail(dot)com
Yahoo!: VitalyBe
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2005-02-20 22:17:02 | Re: Which parameters requires a restart? |
Previous Message | Ragnar Hafstað | 2005-02-20 21:55:04 | Re: Problems with select statement |