Re: parameterized views? - Mailing list pgsql-general

From Linn Kubler
Subject Re: parameterized views?
Date
Msg-id al5div$1g22$1@news.hub.org
Whole thread Raw
In response to Re: parameterized views?  (Jeff Davis <list-pgsql-general@empires.org>)
List pgsql-general
YES! That's it!  I just realized that I made a small error in my example.
What I actually coded was:

create view myview as select f1, f2 from mytable;

Then I put together a select like this:

select * from myview where f3 = 15;

No wonder it wasn't working, there was no f3 column to apply the 'where'
too.  When I changed my view to include f3 everything started working.
That's much better.

My confusion stems from my Visual FoxPro experience.  They have a
parameterized view, goes like this:

create view myview as select f1, f2 from mytable where f3 = ?myparam
(where f3 is a column in mytable)

Then I use it like this:
myparam = 15
use myview

And it returns a view as I was expecting.  The I can see one advantage in
the VFP style and that is that it returns only the columns I'm interested,
in this example f1 and f2.  In Postgres I have to return the f3 column as
well but that's not a big deal, it's not a lot of data and I can ignor it.

I like the idea of using a function too, I'll be looking into that when I
upgrade to 7.3.

Thanks to all who responded,
Linn

"Jeff Davis" <list-pgsql-general@empires.org> wrote in message
news:200209031417.32294.list-pgsql-general@empires.org...
> If that's all you need to do will just defining a view on the first part
work?
> i.e.:
> create view myview as select f1, f2, f3 from mytable;
> then you can do:
> select * from myview where f3 = 15;
>
> Regards,
> Jeff Davis
>
> On Tuesday 03 September 2002 09:04 am, Linn Kubler wrote:
> > Thanks for responding Joe but, not exactly.  I'm looking for something a
> > little simpler, more like this:
> >
> > create view myview as
> >   select f1, f2, f3 from mytable where f3 = $1;
> >
> > And then be able to call the view passing it a parameter somehow.
Possibly
> > like:
> >
> > select * from myview where f3 = 15;      (where 15 would replace $1)
> >
> > Something like that.  Returning sets from a function looks promising
but,
> > 7.3 seems like it's a long way off if it's just going to beta now.
> >
> > Thanks again,
> > Linn
> >
> > "Joe Conway" <mail@joeconway.com> wrote in message
> > news:3D743B44.2080601@joeconway.com...
> >
> > > Linn Kubler wrote:
> > > > Hi,
> > > >
> > > > Is it possible to have parameterized views?  Guess I'm thinking of
> > > > something like a posiitonal parameter in a view.  If it is possible
I'd
> > > > sure appreciate an example.
> > >
> > > In 7.3 (starting beta this week) you can return sets (rows and
columns)
> > > from table functions. For example:
> > >
> > > test=# create table foo(f1 int, f2 text, f3 text[], primary key
(f1,f2));
> > > NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index
> > > 'foo_pkey' for table 'foo'
> > > CREATE TABLE
> > > test=# insert into foo values(0,'a','{"a0","b0","c0"}');
> > > INSERT 664851 1
> > > test=# insert into foo values(1,'b','{"a1","b1","c1"}');
> > > INSERT 664852 1
> > > test=# insert into foo values(2,'c','{"a2","b2","c2"}');
> > > INSERT 664853 1
> > > test=# create or replace function get_foo(int) returns setof foo as
> > > 'select * from foo where f1 > $1' language sql;
> > > CREATE FUNCTION
> > > test=# select * from get_foo(0);
> > >   f1 | f2 |     f3
> > > ----+----+------------
> > >    1 | b  | {a1,b1,c1}
> > >    2 | c  | {a2,b2,c2}
> > > (2 rows)
> > >
> > > Is this what you're looking for?
> > >
> > > HTH,
> > >
> > > Joe
> > >
> > >
> > >
> > > ---------------------------(end of
broadcast)---------------------------
> > > TIP 6: Have you searched our list archives?
> > >
> > > http://archives.postgresql.org
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 4: Don't 'kill -9' the postmaster
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org



pgsql-general by date:

Previous
From: Mukund Pate
Date:
Subject: uninstall postgresql
Next
From: wy2lam@yahoo.com (Michael Lam)
Date:
Subject: libpq question...