Обсуждение: Can you combine text variable together to referenece a VIEW name ?
Hi there, I am trying to combine 2 text variable togther to form the name of a VIEW. example SELECT * FROM ( 'april'||'may') ; I have a 12 different views and I want to be able to select a different view depending on the contents of 2 fields in a database. Has anyone done this before or have any ideas on how to do it ? Thanks
Bigjim wrote: > Hi there, > I am trying to combine 2 text variable togther to form the name of a > VIEW. example > > > SELECT * FROM ( 'april'||'may') ; The table (or view) part is not a character string but an identifier. -- Lew
On 09/04/2007 00:36, Bigjim wrote: > I am trying to combine 2 text variable togther to form the name of a > VIEW. example > > SELECT * FROM ( 'april'||'may') ; I think you want to use EXECUTE from within a pl/pgsql function to construct and execute a query dynamically - have a look at this: http://www.postgresql.org/docs/8.2/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN HTH, Ray. --------------------------------------------------------------- Raymond O'Donnell, Director of Music, Galway Cathedral, Ireland rod@iol.ie ---------------------------------------------------------------
"Raymond O'Donnell" <rod@iol.ie> writes: > On 09/04/2007 00:36, Bigjim wrote: >> I am trying to combine 2 text variable togther to form the name of a >> VIEW. example >> SELECT * FROM ( 'april'||'may') ; > I think you want to use EXECUTE from within a pl/pgsql function to > construct and execute a query dynamically - have a look at this: > http://www.postgresql.org/docs/8.2/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN That's the only way to do it (modulo that you can do this in any of the PLs not only plpgsql) ... but a more general point is that the OP is trying to swim against the tide. Almost certainly, rethinking the design of those views is called for: try to merge them into one view. regards, tom lane