Postgresql “处的语法错误”;端环&引用;plpgsql中WHILE循环的一部分
尝试在plpgsql中定义无法解释的函数时,我遇到语法错误。由于某些原因,此代码将始终失败,或“循环”出现语法错误。: 代码成功执行一次,但在第二次执行时立即失败,并出现相同的错误 我对此完全感到困惑。我已经一次注释掉了每个块,以及试图找到问题的各行,我在任何地方都找不到语法错误,但它一直在抱怨Postgresql “处的语法错误”;端环&引用;plpgsql中WHILE循环的一部分,postgresql,plpgsql,postgresql-9.6,Postgresql,Plpgsql,Postgresql 9.6,尝试在plpgsql中定义无法解释的函数时,我遇到语法错误。由于某些原因,此代码将始终失败,或“循环”出现语法错误。: 代码成功执行一次,但在第二次执行时立即失败,并出现相同的错误 我对此完全感到困惑。我已经一次注释掉了每个块,以及试图找到问题的各行,我在任何地方都找不到语法错误,但它一直在抱怨 我使用的是postgresql 9.6。如果要获得单个if语句,请使用ELSIF: IF dev < 0 THEN /* Current area is smaller than desi
我使用的是postgresql 9.6。如果要获得单个
if
语句,请使用ELSIF
:
IF dev < 0 THEN /* Current area is smaller than desired area, increase the buffer distance by the step. */
guess = guess + step;
ELSIF dev > 0 THEN /* Current area is larger than desired area, decrease the buffer distance by the step. */
guess = guess - step;
ELSE /* Technically shouldn't ever happen because then ABS(dev) is indeed lesser than tol but here just in case. */
EXIT;
END IF;
如果dev<0,则/*当前区域小于所需区域,按步骤增加缓冲区距离*/
猜=猜+步;
如果dev>0,则/*当前区域大于所需区域,则按步长减小缓冲区距离*/
猜测=猜测-步骤;
ELSE/*技术上不应该发生,因为当时ABS(dev)确实比tol小,但这里只是以防万一*/
出口
如果结束;
在
结束循环
之前,阅读有关的文档,您误用了结束IF
。见简化和预期:
IF dev < 0 THEN
guess = guess + step;
ELSE
IF dev > 0 THEN
guess = guess - step;
ELSE
EXIT;
END IF;
END IF; -- this is missing
如果dev<0,则
猜=猜+步;
其他的
如果dev>0,则
猜测=猜测-步骤;
其他的
出口
如果结束;
如果结束;——这个不见了
从技术上讲,这是可行的,但问题是当我打算写ELSIF
时,我正在写ELSIF
IF dev < 0 THEN /* Current area is smaller than desired area, increase the buffer distance by the step. */
guess = guess + step;
ELSIF dev > 0 THEN /* Current area is larger than desired area, decrease the buffer distance by the step. */
guess = guess - step;
ELSE /* Technically shouldn't ever happen because then ABS(dev) is indeed lesser than tol but here just in case. */
EXIT;
END IF;
IF dev < 0 THEN
guess = guess + step;
ELSE
IF dev > 0 THEN
guess = guess - step;
ELSE
EXIT;
END IF;
END IF; -- this is missing