Using the extract() function in plpgsql

Поиск
Список
Период
Сортировка
Искать
От
Kristis Makris
Тема
Using the extract() function in plpgsql
Дата
Msg-id
200106201649.f5KGnoa95364@postgresql.org
Список
Дерево обсуждения
Re: Using the extract() function in plpgsql Richard Huxton <dev@archonet.com>
Re: Using the extract() function in plpgsql Tom Lane <tgl@sss.pgh.pa.us>
Re: Using the extract() function in plpgsql Kristis Makris <kristis.makris@datasoft.com>
Re: Using the extract() function in plpgsql Kristis Makris <kristis.makris@datasoft.com>
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;lSeconds INT4;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: 
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 по дате отправления
От: Hunter, Ray
Дата:
Сообщение: Functions and Triggers
От: mcbang@gmx.de (Ingo Oellers)
Дата:
Сообщение: Re: Moving between databases
FAQ