Обсуждение: if row has property X, find all rows that has property X

Поиск
Список
Период
Сортировка

if row has property X, find all rows that has property X

От
Дмитрий Голубь
Дата:
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?
Thanks


Re: if row has property X, find all rows that has property X

От
David G Johnston
Дата:
Дмитрий Голубь 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(); $$

David J.





--
View this message in context:
http://postgresql.1045698.n5.nabble.com/if-row-has-property-X-find-all-rows-that-has-property-X-tp5808885p5808888.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.


Re: if row has property X, find all rows that has property X

От
Merlin Moncure
Дата:
On Tue, Jun 24, 2014 at 8:40 AM, David G Johnston
<david.g.johnston@gmail.com> 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