Является ли мой запрос правильным, как передать параметр в функции хранимых процедур SQL Postgres

Я борюсь с как передать параметр в функции хранимой процедуры в Postgres sql. Мой запрос правильный? Я получаю ошибку неверный синтаксис ввода для даты типа: «Firstdate».Что мне не хватает? Пожалуйста, посоветуй мне

CREATE OR REPLACE FUNCTION prisonparam(dvn_cd text,
phc_cd  text,
Firstdate Date,
Seconddate Date,
To Date)
RETURNS table (round text,sc bigint,scupto bigint)
AS $$
/* query start */
WITH a
AS (
SELECT
round AS round
,Sum(ben_sc) AS SC

FROM prison_issue
WHERE (
DATE BETWEEN 'Firstdate'
AND 'To'
)
AND dvn_cd = 'dvn_cd'
AND phc_cd = 'phc_cd'

GROUP BY round ORDER BY round
)
,b
AS (
SELECT round AS round_up
,Sum(ben_sc) AS SC_up


FROM prison_issue
WHERE (
DATE BETWEEN 'Seconddate'
AND 'To'
)
AND dvn_cd = 'dvn_cd'
AND phc_cd = 'phc_cd'
GROUP BY round ORDER BY round
)
SELECT b.round_up AS round
,coalesce(a.sc, 0) AS SC
,coalesce(b.sc_up, 0) AS SCUPTO

FROM a
RIGHT JOIN b ON a.round = b.round_up
/* query end*/
$$ LANGUAGE sql;

0

Решение

Не заключайте в кавычки параметры.

 DATE BETWEEN 'Firstdate'
AND 'To'

пытается использовать 'Firstdate' а также 'To' как литералы.

Не цитируйте их.

 DATE BETWEEN Firstdate
AND To

или если вы должны использовать, возможно, проблемные идентификаторы, такие как To как переменные, вы должны заключить их в двойные кавычки. Но если вы сделаете это, сделайте это везде, включая список объявлений параметров.

 DATE BETWEEN Firstdate
AND "To"
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]