DECLARE 子句中的 PostgreSQL 函数语法错误

PostgreSQL Function Syntax Error in DECLARE clause

我无法创建此函数,因为我在 第 6 行 中遇到 INTEGER 附近的语法错误。我在这里遗漏了什么吗?

CREATE OR REPLACE FUNCTION public.update_application_status_by_token(applicationToken integer, userId integer, newStatus data.applicationstatus)
  RETURNS BOOLEAN
  LANGUAGE sql
AS $function$
    DECLARE
      applicationId INTEGER;
    BEGIN
      SELECT id INTO applicationId FROM data.listings_applications WHERE token = applicationToken;
      INSERT INTO public.listings_applications_status(application_id, user_id, status)  VALUES (applicationId, userId, newStatus);
      UPDATE public.listings_applications SET status = newStatus WHERE token=applicationToken;
      RETURN TRUE;
      EXCEPTION WHEN OTHERS THEN
        RETURN FALSE;
    END;
$function$

这是一个 PL/pgSQL 函数,因此您必须这样声明它。

使用

LANGUAGE plpgsql

而不是

LANGUAGE sql

改变

LANGUAGE sql

LANGUAGE plpgsql

让它发挥作用。 SQL DECLARE 用于游标。在你的函数中它是 plpgslq 命令