Using the extract() function in plpgsql - Mailing list pgsql-sql

From Kristis Makris
Subject Using the extract() function in plpgsql
Date
Msg-id 200106201649.f5KGnoa95364@postgresql.org
Whole thread Raw
Responses Re: Using the extract() function in plpgsql
List pgsql-sql
Hello all,

I'm using PostgreSQL 7.1.2 on i686-pc-linux-gnu, compiled by GCC
egcs-2.91.66

I'm having trouble making use of the extract function in plpgsql. The
examples in the documentation show that the function can be called in
the following way:

SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours');
Result: 442800

If the function is called in the above way through the psql client, then
a result is retrieved. But how can the extract() be used in a plpgsql
function without using the EXECUTE statement? Here's what I've been
trying:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CREATE FUNCTION ACFTProduced(TIMESTAMP, TIMESTAMP, DECIMAL(9,1)) RETURNS
DECIMAL(9,2) AS '
DECLARElFromDate ALIAS FOR $1;lToDate ALIAS FOR $2;lFlow ALIAS FOR $3;lACFTProduced NUMERIC;lDateInterval
INTERVAL;lSecondsINT4;lExecStmt TEXT;
 
BEGINlDateInterval = lToDate - lFromDate;
lExecStmt = ''SELECT extract(epoch from interval '' ||        '''''''' || lDateInterval || '''''''' ||        '') INTO
lSeconds'';
----I would like to execute the following statement----SELECT    extract(epoch from interval lDateInterval)--INTO
lDays;--
 
RAISE NOTICE ''The difference interval is: %'', lDateInterval;RAISE NOTICE ''The seconds are: %'', lSeconds;RAISE
NOTICE''The execStmt is: %'', lExecStmt;
 
EXECUTE lExecStmt;
RETURN lACFTProduced;
END;
'    LANGUAGE 'plpgsql';
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

If the function is called:

test=# select acftproduced('2001-04-18 16:55:11-07', current_timestamp,
4.5);
NOTICE:  The difference interval is: 62 days 16:39:07
NOTICE:  The seconds are: <NULL>
NOTICE:  The execStmt is: SELECT extract(epoch from interval '62 days
16:39:07') INTO lSeconds
ERROR:  EXECUTE of SELECT ... INTO is not implemented yet


Is there any other way the extract() can be called?

Thanks for any help
-Kristis



pgsql-sql by date:

Previous
From: "Hunter, Ray"
Date:
Subject: Functions and Triggers
Next
From: mcbang@gmx.de (Ingo Oellers)
Date:
Subject: Re: Moving between databases