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

时间:2016-12-01 09:42:56

标签: sql postgresql plpgsql postgresql-9.4 sql-function

我无法创建此功能,因为我在第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$

2 个答案:

答案 0 :(得分:3)

这是一个PL / pgSQL函数,所以你必须声明它。

使用

LANGUAGE plpgsql

而不是

LANGUAGE sql

答案 1 :(得分:1)

更改

LANGUAGE sql

LANGUAGE plpgsql

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