From: | Ow Mun Heng <Ow(dot)Mun(dot)Heng(at)wdc(dot)com> |
---|---|
To: | Postgres General <pgsql-general(at)postgresql(dot)org> |
Subject: | help w/ SRF function |
Date: | 2007-09-17 01:21:22 |
Message-ID: | 1189992082.14185.17.camel@neuromancer.home.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi,
I want to use a SRF to return multi rows.
current SRF is pretty static.
create type foo_type as (
id smallint
data1 int
data2 int
)
CREATE OR REPLACE FUNCTION foo_func()
RETURNS SETOF foo AS
$BODY$
SELECT
TRH.ID,
TRH.data1,
TRH.data2,
FROM D
INNER JOIN TS
ON TS.id = D.id
inner join TRH
on ts.id = trh.id
WHERE D.start_timestamp BETWEEN '8/1/2007' AND '9/8/2007'
And D.code IN ('ID_123')
$BODY$
LANGUAGE 'sql' IMMUTABLE STRICT;
I would like for the above to be a little bit more dynamic in that the
start_timestamp and the code can be input-fields.
eg:
CREATE OR REPLACE FUNCTION foo_func(fromdate timestamp, todate
timestamp, code text)
RETURNS SETOF foo AS
$BODY$
SELECT
TRH.ID,
TRH.data1,
TRH.data2,
FROM D
INNER JOIN TS
ON TS.id = D.id
inner join TRH
on ts.id = trh.id
WHERE D.start_timestamp BETWEEN fromdate AND todate
And D.code IN (code)
$BODY$
LANGUAGE 'sql' IMMUTABLE STRICT;
How can I go about this this? The above will fail due to missing columns
fromdate/todate/code.
Or should I use plpgsql as SQL cannot handle variable substitution?
What about doing dynamic SQL eg:
Dsql = select X,Y,Z from foo, join bar on bar.a = foo.a
where D.start_timestamp between ' || fromdate ||' and ' ||
todate||'
execute DSQL
Thanks for any/all help.
From | Date | Subject | |
---|---|---|---|
Next Message | Ow Mun Heng | 2007-09-17 01:42:10 | Re: help w/ SRF function |
Previous Message | Ow Mun Heng | 2007-09-17 00:32:04 | New/Custom DataType - Altering definition / seeing definition in pgAdmin3 |