【问题标题】:'ERROR: syntax error at or near "AS"' for a PL/pgSQL function with FOR LOOP带有 FOR LOOP 的 PL/pgSQL 函数的“错误:在“AS”处或附近出现语法错误
【发布时间】:2015-11-16 06:11:20
【问题描述】:

以下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;

【问题讨论】:

标签: postgresql for-loop plpgsql


【解决方案1】:

这是错误的语法 - Postgres 不支持在 FOR 语句中声明 CURSOR。见documentation

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;

看起来您使用的是 ANSI SQL PSM 语法。 PL/pgSQL 基于 PL/SQL 语法 (Oracle/ADA)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 2017-02-20
    相关资源
    最近更新 更多