plpgsql loop not returning value

Поиск
Список
Период
Сортировка
От Josh Close
Тема plpgsql loop not returning value
Дата
Msg-id 4a0cafe204101520566aaf3b88@mail.gmail.com
обсуждение исходный текст
Ответы Re: plpgsql loop not returning value  (Michael Fuhr <mike@fuhr.org>)
Список pgsql-general
I'm having a problem with a value coming out of a loop.

CREATE OR REPLACE FUNCTION funmessagespermintotal()
  RETURNS int8 AS
'
DECLARE

this_rServer record;
this_rSum record;
this_iSum bigint;
this_iTotal bigint;
this_iMsgsPerMin bigint;
this_sQuery varchar(500);

BEGIN

this_iTotal := 0;
FOR this_rServer IN SELECT iId FROM tblServers LOOP
    this_sQuery := \'
        SELECT SUM( iNumSent ) AS iSum
        FROM tblBatchHistory_\' || this_rServer.iid  || \'
        WHERE tStamp > now() - interval \'\'5 min\'\';
    \';
    FOR this_rSum IN EXECUTE this_sQuery LOOP
        this_iSum := this_rSum.isum;
    END LOOP;
    this_iTotal := this_iTotal + this_iSum;
END LOOP;

this_iMsgsPerMin := this_iTotal / 5;

IF this_iMsgsPerMin IS NULL THEN
    this_iMsgsPerMin := 0;
END IF;

RETURN this_iMsgsPerMin;

END;
'
  LANGUAGE 'plpgsql';

If I return this_iSum or this_iTotal in the loop, I get a value. If I
return directly after the loop, the value is NULL. I can't figure out
why it's doing this. The value comes out of the inside for loop just
fine, but not the outer loop.

What's going on?

-Josh

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

Предыдущее
От: snpe
Дата:
Сообщение: Re: pgsql cvs
Следующее
От: Michael Glaesemann
Дата:
Сообщение: Re: Has anyone tried Date/Darwen/Lorentzos's model for temporal data?