Postgres - 错误:在“IF”或其附近的语法错误
问题描述:
我有一个函数,我需要根据inputid做不同的选择。所以我添加了如下的条件。Postgres - 错误:在“IF”或其附近的语法错误
....
begin
IF(iv_binrocess = 1 AND IsNull(iv_binno,'') != '') THEN
...//some process here
END If;
...
End
当我运行的功能,我得到了错误“
ERROR: syntax error at or near "IF" I referred many sites and tutorials, nothing helped me.
谁能帮我解决这个问题?
感谢
答
WAG,因为你删除最的重要信息:您正在尝试使用PL/pgsql主体创建函数,但声明了SQL
。
craig=> CREATE FUNCTION test() RETURNS void LANGUAGE sql AS
$$ BEGIN IF TRUE THEN PERFORM 1; END IF; END; $$ ;
ERROR: syntax error at or near "IF"
LINE 1: ...TION test() RETURNS void LANGUAGE sql AS $$ BEGIN IF TRUE TH...
声明PL/pgSQL函数为LANGUAGE plpgsql
。
如果您不想使用SQL函数,请使用CASE
表达式而不是IF
。
CREATE FUNCTION test2() RETURNS integer LANGUAGE sql
AS $$ SELECT CASE WHEN TRUE THEN 1 ELSE 0 END; $$;
(请注意,我没有打扰到可读格式这些。不要写功能于现实像这样的代码一行。)
我怀疑你已经从样品剥离足够的代码你贴出来解决它的问题。请发布有关错误的完整代码。你确定你正在看功能体中正确的'IF'吗? –
向我们展示您的**完整**代码。 ** [编辑] **您的问题 - 请不要**在注释中张贴代码或其他信息。 –
另外,你添加了Postgres的标签,但是Postgres没有'IsNull'函数,它在Postgres中的等价物是'coalesce' - [见文档](https://www.postgresql.org/docs/current/static/功能-conditional.html#函数 - COALESCE - NVL - IFNULL)。 –