Re: pl/pgsql loop thru columns names - Mailing list pgsql-general

From Scott Bailey
Subject Re: pl/pgsql loop thru columns names
Date
Msg-id 4A8EC6CA.6070604@comcast.net
Whole thread Raw
In response to pl/pgsql loop thru columns names  (Dilyan Berkovski <berkovski@yahoo.com>)
List pgsql-general
Dilyan Berkovski wrote:
> Hi All,
>
> I have a nasty table with many repeating columns of the kind port_ts_{i}_<something>, where {i} is from 0 to 31, and
<something>could be 3 different words. 
> I have made a pl/pgsql function that checks those columns from port_ts_1_status to port_ts_31_status and counts
something,however this is nasty and ugly thing to do - repeat 31 times one statement for looping thru {i} and do it 3
timesto loop thru <something>. This is how I do it now: 
> REATE OR REPLACE FUNCTION auto_util()
>   RETURNS "trigger" AS
> $BODY$DECLARE
> count_free      integer;
> util            real;
> BEGIN
> count_free = 0;
> IF new.port_ts_1_status='free' THEN count_free = count_free + 1;
> End if;
> IF new.port_ts_2_status='free' THEN count_free = count_free + 1;
> End if;
> IF new.port_ts_3_status='free' THEN count_free = count_free + 1;
> End if;
> IF new.port_ts_4_status='free' THEN count_free = count_free + 1;
> End if;
> IF new.port_ts_5_status='free' THEN count_free = count_free + 1;
> End if;
> IF new.port_ts_6_status='free' THEN count_free = count_free + 1;
> End if;
> IF new.port_ts_7_status='free' THEN count_free = count_free + 1;
> End if;
> .... and till the end ilke this.
>
> Can I do a loop, and make the column naming to be build dynamically (as the dynamic queries in pl/pgsql)?
> something like
> for i in 1..31 do
> Loop
> If new.port_ts_[i]_status='free' ... and so on
> end Loop.
> I tryed but unsuccessfully :(, and can not find much in the documentation.
> I am using 8.1 and 8.2 Postgresql DBs.
> Someone with an idea?
> Thanks

Probably normalizing the table would give you the best bang for your
buck if that is an option.

pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: Out of memory on pg_dump
Next
From: "Eric Comeau"
Date:
Subject: New database or New Schema?