尝试使用if语句创建函数时出现Postgresql语法错误

尝试使用if语句创建函数时出现Postgresql语法错误,postgresql,if-statement,plpgsql,stored-functions,Postgresql,If Statement,Plpgsql,Stored Functions,我是postgresql的新手。因此,我试图创建一个函数,但得到的错误消息如下 错误:“如果”第7行或其附近出现语法错误:如果areaname=NULL或pincode=NULL,则 我提到了这个 我知道这是一个愚蠢的错误,但请帮我解决。返回用于声明函数的返回类型。为了实际返回值,您应该使用return: IF areaname IS NULL OR pincode IS NULL THEN RETURN false; -- Here! ELSE -- etc. SQL中没有

我是postgresql的新手。因此,我试图创建一个函数,但得到的错误消息如下

错误:“如果”第7行或其附近出现语法错误:如果areaname=NULL或pincode=NULL,则

我提到了这个


我知道这是一个愚蠢的错误,但请帮我解决。

返回
用于声明函数的返回类型。为了实际返回值,您应该使用
return

IF areaname IS NULL OR pincode IS NULL THEN 
    RETURN false; -- Here!
ELSE
    -- etc.

SQL中没有
IF
,如果需要,必须使用
语言plpgsql
。要返回值,需要使用
return
,而不是
returning

您也不需要SELECT语句来访问要更新的行中的列的值,只需直接引用该列即可。您可以将CASE表达式简化为一个简单的coalesce()

创建函数位置。“fn\u updateInArea”(p\u area\u id整数、p\u areaname文本、p\u pincode文本)
返回布尔值
语言plpgsql--
IF areaname IS NULL OR pincode IS NULL THEN 
    RETURN false; -- Here!
ELSE
    -- etc.
CREATE FUNCTION location."fn_updateInArea"(p_area_id integer, p_areaname text, p_pincode text)
    RETURNS boolean
    LANGUAGE plpgsql --<< Here
AS $BODY$
BEGIN
  IF p_areaname IS NULL OR p_pincode IS NULL THEN 
    RETURN false; --<< use RETURN not RETURNING
  ELSE
    UPDATE location.areainfo 
      SET area_name = coalesce(p_areaname, area_name)
          pin_code = coalesce(p_pincode, pin_code)
    WHERE id=area_id 
    AND "deleteIndex"=false;

    RETURN true;
  END IF;
END;
$BODY$;