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
命令
我无法创建此函数,因为我在 第 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
命令