'错误:对于带有FOR LOOP的PL / pgSQL函数,在“AS”处或附近的语法错误

时间:2015-11-16 06:11:20

标签: postgresql for-loop plpgsql

我在下面的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;

1 个答案:

答案 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)。