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). ---------------------------(end of broadcast)--------------------------- TIP 3: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to majordomo@xxxxxxxxxxxxxx so that your message can get through to the mailing list cleanly