Я пытаюсь создать функцию, которая суммирует результат всех значений одного запроса и сравнивает его с рядом других простых запросов.Ошибка синтаксиса при создании функции Postgres
Это то, что у меня есть, но я получаю ошибку синтаксиса около начать (2-я строка):
CREATE FUNCTION trigf1(sbno integer, scid numeric(4,0)) RETURNS integer
BEGIN
declare sum int default 0;
declare max as SELECT totvoters FROM ballotbox WHERE cid=scid AND bno=sbno;
for r as
SELECT nofvotes FROM votes WHERE cid=scid AND bno=sbno;
do
set sum = sum + r.nofvotes;
end for
if sum > max
then return(0);
else
return(1);
END
Это приводит к:
ошибка синтаксиса около 'BEGIN'
Я использую postgreSQL и pgadminIII (на всякий случай это актуально).
Я понятия не имею, почему я получаю эту ошибку, все, кажется, точно так же, как определенный учебник. (Это текст книги я использую: http://digilib.usu.ac.id/buku/107859/Database-systems-concepts,-6th-ed.html)
Что синтаксическая ошибка? – Marc
'RETURNS integer AS $$' –
Внимательно прочитайте руководство: исходный код функции является строковым литералом, и есть только один раздел 'declare', и вам не предоставляется опция' language'. И не существует 'set' в PL/pgSQL. Приемы выполняются с использованием ': =' –