Мне нужно предоставить ряд хранимых процедур, которые возвращают результат выполнения агрегатной функции для выбора значений в базе данных, т. Е. Среднего, суммы, минимума, максимума и т. Д. Выбор значений всегда выполняется впохожим образом.
Моя первая, наивная реализация состоит из одного хранимого процесса для каждого типа агрегатной функции, например, get_avg (...), get_sum (...).Функции, очевидно, имеют довольно много повторяющегося кода.Интересно, есть ли способ переместить агрегатный тип в параметр или около того, а затем использовать только один сохраненный процесс, например, get_aggregate (aggr_type, ...)
Единственный способ, который я могу придумать, насколькоРеализация pl / pgsql заключается в том, чтобы выбрать значения, которые должны входить в агрегат, а затем использовать их во всех предложениях if aggr_type == ... / else, которые существуют в агрегатных типах.Хотя это не очень гибко и требует изменения кода всякий раз, когда должен поддерживаться новый тип агрегата.
Есть ли способ параметризации имени функции в pl / pgsql?Может ли кто-нибудь придумать подход, который я не вижу?