我在下面的FOR
循环中遇到错误,光标位于函数中:
ERROR: syntax error at or near "AS"
CREATE OR REPLACE FUNCTION functionName(custom varchar(15)) RETURNS INTEGER AS $$
DECLARE
...
BEGIN
...
FOR loop AS cursor CURSOR FOR
SELECT column FROM table
DO
...
END FOR;
RETURN someValue;
END;
$$
LANGUAGE plpgsql;
答案 0 :(得分:1)
这是错误的语法 - Postgres不支持在CREATE OR REPLACE FUNCTION foo()
RETURNS void AS $$
DECLARE r record;
BEGIN
FOR r IN SELECT xx,yy FROM some_tab
LOOP
RAISE NOTICE 'row data: %', r;
END LOOP;
END;
$$ LANGUAGE plpgsql;
语句中声明CURSOR。见documentation:
\s*([^><[\]]+\b)|\[([^]]*)]|<([^>]*)>
看起来你正在使用ANSI SQL PSM语法。 PL / pgSQL基于PL / SQL语法(Oracle / ADA)。