Re: pl/pgsql and returns timestamp type

Поиск
Список
Период
Сортировка
От Terry Yapt
Тема Re: pl/pgsql and returns timestamp type
Дата
Msg-id 3D7E32BE.17F3D3AE@technovell.com
обсуждение исходный текст
Ответ на Re: pl/pgsql and returns timestamp type  ("Josh Berkus" <josh@agliodbs.com>)
Ответы Re: pl/pgsql and returns timestamp type  (Josh Berkus <josh@agliodbs.com>)
Re: pl/pgsql and returns timestamp type  (Hubert depesz Lubaczewski <depesz@depesz.pl>)
Список pgsql-novice

Josh Berkus wrote:
>
> Terry,
>
> Can you explain what you are trying to accomplish with this function?
>  I'll tell you below why it won't work, but to help you find a
> workaround, I'll need to know what you're appempting.

I am only testing different datatypes.  In the example I would like to know how many time was spent by the function
execution.

> -- First off, don't include limits in your function type declarations.
>  That is,
> -- use f_test(numeric, numeric) not f_test (numeric(7,0),
> numeric(7,0)).
> -- Type limits are ignored by the function parser, and will sometimes
> cause
> -- errors.

Ok.. thanks...

>
>  RETURNS
> > timestamp AS '
> >   DECLARE
> >     p_datod ALIAS FOR $1;
> >     p_datoh ALIAS FOR $2;
> >     --
> >     tdesde timestamp;
> >     thasta timestamp;
> >   BEGIN
> >     tdesde := now();
> >     --
> >     FOR X IN p_datod..p_datoh LOOP
> >       INSERT INTO test VALUES (x);
> >     END LOOP;
> >     --
> >     thasta := now() - tdesde;
>
> --Problem #1:  A TIMESTAMP minus another TIMESTAMP returns an
> --INTERVAL, not a TIMESTAMP.   See my paper on timestamps and
> --intervals on http://techdocs.postgresql.org/

Sorry.  I had no luck looking for your document... :-(

>
> --Problem #2: since functions are inherently a single
> --transaction, the values of global database variables -- such as NOW()
>
> --are frozen at the beginning of the function.  Thus, the function as
> you
> --have written it will always return an interval of 0:00

Hummm... ok.   I have read this in somewhere.  But I have too much information about pgsql to digest (for the moment).
But then... How could I obtain "variable global values" (like the timestamp for example) in different function
locationswhit its "at time" values ??? 

>
> >     RETURN thasta;
> >   COMMIT;
>
> --Problem #3: A commmit statement is entirely superflous within a
> --function, which is transactional regardless, and will cause an error.

But...then..
Do you mean all or nothing of the function statements will be executed regardless how many tables and/or sentences will
beinvolved ???? 

>
> >   END;
> > ' LANGUAGE 'plpgsql';
> > --====================================
> > select f_test(1,9);
>

Is, at least, the above statement right ??????  ;-) <g>

It is a joke.. thanks for your help Josh...

В списке pgsql-novice по дате отправления:

Предыдущее
От: Ernesto Jardim
Дата:
Сообщение: Re: login problem
Следующее
От: Terry Yapt
Дата:
Сообщение: Re: pl/pgsql and returns timestamp type