我在 postgres 函数中遇到问题:
CREATE OR REPLACE FUNCTION linkedRepoObjects(id bigint)
RETURNS int AS $$
DECLARE catNumber int DEFAULT 0;
DECLARE cat RECORD;
BEGIN
WITH RECURSIVE children(categoryid,category_fk) AS (
SELECT categoryid, category_fk
FROM b2m.category_tab
WHERE categoryid = 1
UNION ALL
SELECT c1.categoryid,c1.category_fk
FROM b2m.category_tab c1, children
WHERE children.categoryid = c1.category_fk
)
FOR cat IN SELECT * FROM children LOOP
IF EXISTS (SELECT 1 FROM b2m.repoobject_tab WHERE category_fk = cat.categoryid) THEN
catNumber = catNumber +1
END IF;
END LOOP;
RETURN catNumber;
END;
$$ LANGUAGE 'plpgsql';
我有错误:
FEHLER: Syntax error near »FOR«
LINE 1: ...dren WHERE children.categoryid = c1.category_fk ) FOR $2 I...
最佳答案
语法错误是因为它期望 WITH ...
后跟 SELECT
它在哪里找到FOR
.
我没有在 plpgsql 的查询中使用 WITH
子句,但我会尝试将 FOR cat IN
移动到 WITH
之前,这是查询的一部分。
关于postgresql - Postgres FOR LOOP 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2839479/