“;”处或附近的语法错误第 22 行 - PostgreSQL

syntax error at or near ";" LINE 22 - Postgresql

我正在 PostgreSQL 中创建用户定义的函数并遇到错误。

此外,请提出更好的方法(如果有的话)来执行此功能。

CREATE FUNCTION public.mark_enrollment_completed(IN enrollment_id text)
    RETURNS boolean
    LANGUAGE plpgsql
AS $BODY$

DECLARE
    total_contents INTEGER;
    completed_content_count INTEGER;
    user_id TEXT;
    course_id TEXT;
    was_marked BOOLEAN;
BEGIN
    SELECT user_id, course_id INTO user_id, course_id FROM enrollments WHERE enrollment_id = enrollment_id;
    SELECT count(*) INTO total_contents FROM course_contents WHERE course_id = course_id;
    SELECT count(*) INTO completed_content_count FROM completed_contents WHERE user_id = user_id;
    IF total_contents = completed_content_count THEN
        UPDATE enrollments SET is_completed = true WHERE enrollment_id = enrollment_id;
        SET was_marked = true;
    ELSE
        SET was_marked = false;
    RETURN was_marked;
END;
$BODY$;

错误:

ERROR:  syntax error at or near ";"
LINE 22: END;
            ^
SQL state: 42601
Character: 750

As documented in the manual 赋值是使用 := 运算符完成的 - PL/pgSQL.

中没有 SET

您还缺少 END IF

IF total_contents = completed_content_count THEN
    UPDATE enrollments SET is_completed = true WHERE enrollment_id = enrollment_id;
    was_marked := true;
ELSE
    was_marked := false;
END IF;
RETURN was_marked;