| From: | Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com> |
|---|---|
| To: | Vitaly Belman <vitalyb(at)gmail(dot)com> |
| Cc: | PostgreSQL general <pgsql-general(at)postgresql(dot)org> |
| Subject: | Re: Returning 0 rows from a PL/PGSQL |
| Date: | 2005-02-20 00:53:52 |
| Message-ID: | 20050219165158.L99167@megazone.bigpanda.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
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).
| From | Date | Subject | |
|---|---|---|---|
| Next Message | John DeSoi | 2005-02-20 01:15:30 | Re: PGSQL 8.0.1 Win 2K Installation Problem |
| Previous Message | Peter Eisentraut | 2005-02-20 00:04:04 | Re: quoting internal variable names |