Переписать функцию plpgsql в sql - PullRequest
0 голосов
/ 07 ноября 2011

Можно ли переписать следующую функцию plpgsql как функцию sql?Я использую его для агрегирования своих данных по самой последней отметке времени, но хочу развернуть на heroku, который не поддерживает plpgsql.Я мог бы полностью переписать свой исходный запрос, использующий эту функцию, но я бы хотел сохранить гибкость для возможности добавления других агрегатных функций.

CREATE OR REPLACE FUNCTION recent_accum(anyelement, anyelement)
  RETURNS anyelement AS $$
     BEGIN
        IF $1.tstamp IS NULL and $2.tstamp IS NOT NULL
           THEN RETURN $2;
        ELSEIF $1.tstamp IS NOT NULL and $2.tstamp IS NULL
           THEN RETURN $1;
        ELSEIF $2.tstamp > $1.tstamp
           THEN RETURN $2;
        ELSE RETURN $1;
        END IF;
     END;
  $$ LANGUAGE plpgsql;

1 Ответ

0 голосов
/ 07 ноября 2011

Работает ли перезапись цепочки IF / ELSEIF с помощью CASE?

CASE
WHEN $1.tstamp IS NULL AND $2.tstamp IS NOT NULL
     THEN $2
-- ...
ELSE $1
END
...