У меня есть таблица watchers
:Postgres пользовательская функция с ДЕЛУ
------------------------------------------
time_type | time_count | timestamp_created
------------------------------------------
'hour' | 1 | 2016-12-08 15:56:26.169614
'hour' | 13 | ...
'day' | 5 | ...
Я стараюсь, чтобы получить целое число на основе time_type
и time_count
значения:
CREATE OR REPLACE FUNCTION af_calculate_range(tt text,tc integer) RETURNS integer AS $$
SELECT tt, CASE tt WHEN 'day' THEN tc * 60 * 60
WHEN 'hour' THEN tc * 60
END
FROM watchers;
$$
LANGUAGE SQL;
SELECT af_calculate_range(time_type, time_count) FROM watchers
, но я получаю сообщение об ошибке:
ERROR: return type mismatch in function declared to return integer
DETAIL: Final statement must return exactly one column.
CONTEXT: SQL function "af_calculate_range"
********** Error **********
Использование:
SELECT * FROM watchers
WHERE EXTRACT(EPOCH FROM now()) > (EXTRACT(EPOCH FROM timestamp_created) +
af_calculate_range(time_type, time_count))
, если time_type
= 'hour'
и time_count
= 1
вывод должен быть 3600 секунд.
Что случилось с моим, например:
я использовал https://www.postgresql.org/docs/7.4/static/functions-conditional.html
и https://www.postgresql.org/docs/9.1/static/sql-createfunction.html
Почему вы читаете инструкцию по совершенно устаревшей версии (7.4) и прекращенная версии (9.1)? –