Передача аргументов данных в пользовательскую функцию postgresql - PullRequest
1 голос
/ 12 февраля 2020

Я пытаюсь создать пользовательскую функцию, которая будет возвращать SUM из представления расходов на основе заданных дат.

CREATE FUNCTION budget.getTotalAmountFromView (startDate DATE, endDate DATE)
RETURNS DECIMAL AS $$
DECLARE
    totalValue DECIMAL := 0;
BEGIN
    SELECT INTO totalValue sum(amount) from budget.epenses_overview where transaction_date >= startDate AND transaction_date <= endDate;
    RETURN totalValue;
END;
$$ LANGUAGE plpgsql;

Я пытаюсь вызвать ее с помощью:

SELECT * FROM budget.getTotalAmountFromView(TO_DATE(20190201, YYYYMMDD), TO_DATE(20190225, YYYYMMDD));

Но возвращается ошибка

ПОСЛЕ ИЗМЕНЕНИЙ:
Функция должна быть назначена правильной схеме -> бюджет;
и вызываться:
SELECT budget.getTotalAmountFromView('20190201'::DATE, '20190225'::DATE);

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Вам не нужно FROM для скалярной функции:

SELECT budget.getTotalAmountFromView22('20190201'::DATE, '20190225'::DATE);
0 голосов
/ 12 февраля 2020

Вам не хватает одинарных кавычек вокруг строки даты и формата.

TO_DATE(20190201, YYYYMMDD) должно быть TO_DATE('20190201', 'YYYYMMDD')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...