Yeah, if all you use is SELECT, you should probably use a view, then you don't need to specify the output columns in the calling statement, only a WHERE clause.
Othrewise, it's the same thing:
SELECT * FROM myview WHERE field1=10;
Views are transparant in postgresql, so you need not worry that at first your backend will load the whole view and then filter your results (performance-wise).
On 2/13/07, Ron Johnson <ron.l.johnson@xxxxxxx> wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 02/13/07 07:46, Dmitriy Chumack wrote:
> Hi *
>
> I need to write a function, that returns a set of all columns from 2
> tables.
[snip]
> for i in select * from "Table1", "Table2"
> loop
> return next i;
> end loop;
[snip]
>
> This two tables have about 20 columns together, so I don't want list
> them each I call this function. Can I achieve this in some other
> (right) way?
>
> P.S. I don't want to create a specific type for this purpose, but
> if there is no other way, I should.
What do these tables join on?
Creating a view might work.
CREATE VIEW V_SIDE_BY_SIDE AS
SELECT T1.*, T2.*
FROM TABLE1 T1,
TABLE2 T2
WHERE T1.PK = T2.PK;
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFF0ck4S9HxQb37XmcRAjPEAJ9qaHwa5mbKiFVqcfEZbPXIX7GmIwCgzvvs
zCPM45xZ590kv2xXnIoSsqM=
=NkbJ
-----END PGP SIGNATURE-----
---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match