Re: using a plpgsql function argument as a table column.

From: Tim Cross <theophilusx(at)gmail(dot)com>
To: ss(at)tuxclub(dot)org
Cc: "pgsql-generallists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: using a plpgsql function argument as a table column.
Date: 2018-08-29 05:37:03
Message-ID: CAC=50j-aZ1gjrtVD6RAnczBM+VdJwhQCFy+1vu_MLgPij02gUA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Off the top of my head, I think you could do this using dynamic (execute)
SQL in a function. However, it is going to be messy, possibly slow and
likely fragile. You would need to query the catalogue to get the column
names in the table and then build the SQL dynamically 'on the fly'.

Without having more detail, my spider sense tells me you have the wrong
table/relationship design. While you may be able to get it to work, it is
likely you will run into constant problems and additional complexity that
could be avoided with a different design. You really want a design where
your queries are driven by the data in your tables and not by the names of
columns. I would seriously consider re-examining your schema design, look
at how your design fits in with the normal forms and adapt as necessary.

Tim

On Wed, 29 Aug 2018 at 15:10, ss <ss(at)tuxclub(dot)org> wrote:

> I have a table with many years as columns. y1976, y2077, .. ,
> y2019,y2020 I want to dynamically return a column from a function.
>
>
> select * from FUNCTION('y2016') .....
>
> select t1.cola t1.colb, t1.colc, t2.y2016 from ..... Where t2.y2016 != 0;
>
> or if I select year y2012 I want FUNCTION('y2012')
>
> select t1.cola t1.colb, t1.colc, t2.y2012 from ..... Where t2.y2012 != 0;
>
>
> to generalize
>
> select * from FUNCTION( year_column )
>
> select t1.cola t1.colb, t1.colc, t2.year_column from ..... Where
> t2.year_column != 0;
>
> is it possible? if so how?
>
>
>

--
regards,

Tim

--
Tim Cross

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Shaun Savage 2018-08-29 05:38:48 Re: using a plpgsql function argument as a table column.
Previous Message Thomas Boussekey 2018-08-29 05:24:55 Re: using a plpgsql function argument as a table column.