What about: create function set_emp_id() returns void as $$ begin drop table if exists emp_1_id; select emp_id into temp emp_1_id from secureview.tbl_employee where username = current_user; end; $$ language plpgsql; create function get_emp_id() returns int as $$ return select emp_id from emp_1_id; $$ language plpgsql stable; Call set_emp_id once on connection, then use get_emp_id thereafter. Would that be any faster? (This is what Erik meant by " a temp table is pretty much a session variable" in his earlier message.) -- Scott Ribe scott_ribe@xxxxxxxxxxxxxxx http://www.killerbytes.com/ (303) 722-0567 voice