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

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Shaun Savage <savages(at)taxnvote(dot)org>
Cc: pgsql-general <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: using a plpgsql function argument as a table column.
Date: 2018-08-29 05:58:39
Message-ID: CAFj8pRBXeOcRn28yxJkd20uPdHQrfPAPNQb4C8KVdLdyhJ1A8Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi

2018-08-29 7:09 GMT+02:00 Shaun Savage <savages(at)taxnvote(dot)org>:

> I have a table with many years as columns. y1976, y2077, .. , y2019,y2020
> I want to dynamically return a column from a function.
>

no - it is not possible -

the functions should to return exact same set of columns. Teoretically you
can use SETOF RECORD functions and you can specify result in query like

SELECT * FROM fx('xxx') y(c1, c2, c3, ..)

Personally, your design is unahappy - against to ideas of relations
databases. So any native tools will be impossible.

The best what you can is writing query generator and dynamicly create
queries on client side.

Regards

Pavel

>
> 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?
>
>
>
>
>
>
>
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message David G. Johnston 2018-08-29 06:03:54 Re: using a plpgsql function argument as a table column.
Previous Message David G. Johnston 2018-08-29 05:58:05 Re: using a plpgsql function argument as a table column.