I've got an issue with a plpgsql function and I have not been able to find any reference to this situation in searching. I hope that someone can point me in the correct direction. I'm running v8.0.3 and assuming a test set up of: ----------------------------- CREATE TYPE myrec AS ( id int ); CREATE OR REPLACE FUNCTION test(x int) RETURNS myrec AS ' DECLARE output RECORD; BEGIN IF x THEN RETURN NULL; END IF; SELECT INTO output 9999; RETURN output; END; ' LANGUAGE plpgsql; ----------------------------- Testing the function yields: ----------------------------- xxx=# select * from test(0); id ------ 9999 (1 row) xxx=# select * from test(1); id ---- (1 row) ----------------------------- My dilema is that the program I'm trying to write this function for (not mine) expects that if (in this case) a 1 is sent, it should have zero rows returned (0 affected rows). It seems that any time I have a return type of a record I'll get a nice NULL record, but it still counts as something. Is there no way in Postgres that I can simply not return anything so I show zero rows? Thanks. -- David