如何使用 PostgreSql 中的 DO 函数修复 END$$ 错误

How to fix END$$ error with a DO function in PostgreSql

我不明白为什么我在“END $$”行中收到错误消息

DO $$
BEGIN
DECLARE 
    i INT := 0;
    j INT := i + 1;
    numberUsers INT;
    BEGIN
        SELECT COUNT(*) INTO numberUsers FROM "WU_Users";
        WHILE i <= numberUsers LOOP
        i := i + 1; 
    END LOOP;
END $$;

错误:

ERREUR:  erreur de syntaxe à la fin de l'entrée
LIGNE 12 : END $$;

亲切的问候!

适当缩进,就会清晰。块结构为

DECLARE  /* optional */
BEGIN
EXCEPTION  /* optional */
END;

要格式化您的代码:

DO $$
BEGIN
    DECLARE 
        i INT := 0;
        j INT := i + 1;
        numberUsers INT;
    BEGIN
        SELECT COUNT(*) INTO numberUsers FROM "WU_Users";
        WHILE i <= numberUsers LOOP
            i := i + 1; 
        END LOOP;
    /* --> missing END; here <--- */
END $$;

或者,您可以删除开头的 BEGIN,因为最外面的块只包含另一个块。