postgresql中函数的语法错误

postgresql中函数的语法错误,postgresql,syntax,while-loop,cursor,return,Postgresql,Syntax,While Loop,Cursor,Return,我在postgresql语法方面遇到了问题,主要是返回、while循环和游标。如果我不想归还任何东西,我应该写什么?要通过游标,while循环条件应该是什么 CREATE FUNCTION price(category integer, reduce real, minimum integer) RETURNS void; DECLARE name VARCHAR(MAX); DECLARE total integer; DECLARE number integer; BEGIN DECL

我在postgresql语法方面遇到了问题,主要是返回、while循环和游标。如果我不想归还任何东西,我应该写什么?要通过游标,while循环条件应该是什么

CREATE FUNCTION price(category integer, reduce real, minimum integer)
RETURNS void;

DECLARE name VARCHAR(MAX);
DECLARE total integer;
DECLARE number integer;
BEGIN 

DECLARE C1 CURSOR FOR
    SELECT people, quantity FROM store WHERE categories = category;

OPEN C1;

FETCH C1 INTO name, number; 

total = SELECT SUM(quantity) FROM store WHERE categories = category;

WHILE (condition) LOOP  
    IF(total > minimum)
        THEN UPDATE store SET (price = price - reduce) WHERE categories = category;
    END IF;
    FETCH C1 INTO name, number; 
END LOOP;

CLOSE C1; 
END;
LANGUAGE plpgsql;

您的函数过于复杂,在开始行和结束行中有一些语法错误

CREATE FUNCTION price(category integer, reduce real, minimum integer) RETURNS void AS $$
DECLARE
  total integer;
BEGIN 
  SELECT SUM(quantity) INTO total FROM store WHERE categories = category;
  IF total > minimum THEN
    UPDATE store SET price = price - reduce WHERE categories = category;
  END IF;
  RETURN;
END;
$$ LANGUAGE plpgsql STRICT VOLATILE;

你真的不想在这里使用游标,一个
UPDATE
语句更有效。

1)只需
return无参数;2) 使用
FOUND
变量:我知道它很复杂,但我必须使用游标和while循环,而不是您显示的示例。这可能是你正在学习的课程吗?