postgresql中函数的语法错误
我在postgresql语法方面遇到了问题,主要是返回、while循环和游标。如果我不想归还任何东西,我应该写什么?要通过游标,while循环条件应该是什么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
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循环,而不是您显示的示例。这可能是你正在学习的课程吗?