On Tue, Jun 24, 2014 at 8:40 AM, David G Johnston <david.g.johnston@xxxxxxxxx> wrote: > Дмитрий Голубь wrote >> For example I have table addresses and usually I want 2 things: >> 1. Find id of bad addresses. >> 2. Check if this address is good or bad. >> >> For this I write two plpgsql functions >> 1. find_all_bad_addresses >> 2. is_bad_address(id) >> >> These functions will duplicate logic of each other. How to not repeat >> myself? > > You can call other functions while inside a function...... > > CREATE FUNCTION do_a() ... $$ do_something; $$ > CREATE FUNCTION do_b() ... $$ do_a(); $$ I'd consider making 'bad address' a view: CREATE VIEW bad_address AS SELECT * FROM Property WHERE ... Then just reference that in relevant code. merlin