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

标签 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$

最佳答案

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

使用

LANGUAGE plpgsql

而不是

LANGUAGE sql

关于sql - DECLARE 子句中的 PostgreSQL 函数语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40907152/

相关文章:

mysql - 初级SQL数据库查询

查询中的 SQL CASE - 奇怪的行为

postgresql - 来自 ST_Intersects(LINESTRING, POLYGON) 的意外结果

postgresql - 在函数中按列类型过滤行

postgresql - 在 PL/pgSQL block 中运行 SELECT

sql - 使用多个复合输出参数调用 PostgreSQL 函数

postgresql - 如何从 plpgsql 函数返回一个整数并回滚每个修改?

sql - Postgres windows 函数与聚合组依据

sql - 替换 PostgresQL 中 '@' 之后的所有电子邮件地址

java - Mapstruct:尝试映射嵌入对象内的字段时返回 null