尝试使用if语句创建函数时出现Postgresql语法错误
我是postgresql的新手。因此,我试图创建一个函数,但得到的错误消息如下 错误:“如果”第7行或其附近出现语法错误:如果areaname=NULL或pincode=NULL,则 我提到了这个尝试使用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中没有
我知道这是一个愚蠢的错误,但请帮我解决。
返回
用于声明函数的返回类型。为了实际返回值,您应该使用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$;