pgSQL的语法错误,使用函数和if else

Posted

技术标签:

【中文标题】pgSQL的语法错误,使用函数和if else【英文标题】:Syntax error with pgSQL, using functions and if else 【发布时间】:2014-04-04 14:58:14 【问题描述】:

我正在使用 postgreSQL 进行一些练习,我正在创建一个非常简单的函数,它根据变量“num”的值将一行插入到表中。但是,当我尝试创建函数时,我在 pgAdmin III 中收到以下错误:

“发生错误:错误:IF LINE 3 或其附近的语法错误:IF num = 1 THEN”

这是我的代码:

    CREATE FUNCTION "elseIf"(IN num integer) RETURNS void AS
    $BODY$
    IF num = 1 THEN

        INSERT INTO "Accounts"(
         "Email", "Password")
           VALUES ('email1', 'password1');

    ELSE
        INSERT INTO "Accounts"(
         "Email", "Password")
           VALUES ('email2', 'password2');

    END IF;
    $BODY$
    LANGUAGE plpgsql VOLATILE NOT LEAKPROOF;
    ALTER FUNCTION public."elseIf"(IN integer)
    OWNER TO repository;

任何可能的解决方案?提前致谢!

【问题讨论】:

【参考方案1】:

You forgot the BEGIN.

PL/PgSQL 必须包装在 BEGIN ... END 块中。

... RETURNS VOID AS
$BODY$
BEGIN
   IF num = 1 THEN
      ...
   END IF;
END;
$BODY$ ....

【讨论】:

以上是关于pgSQL的语法错误,使用函数和if else的主要内容,如果未能解决你的问题,请参考以下文章

使用 if else 和复选框的电子邮件模板的语法错误

MySQL存储过程语法错误:if else

简单 if-then-else 中的 Ocaml 语法错误

php if then else语句语法错误某处[重复]

PL/pgSQL 语法错误

在 className if-else 语法中反应 JSX [重复]