Postgres - 错误:“IF”或附近的语法错误

时间:2017-07-26 10:59:12

标签: postgresql

我有一个功能,我需要根据inputid做不同的选择。所以我添加了以下条件。

....
begin
IF(iv_binrocess = 1 AND IsNull(iv_binno,'') != '') THEN
...//some process here 
END If;
...
End

当我运行该功能时,我收到错误“

  

错误:“IF”处或附近的语法错误   我提到了许多网站和教程,没有任何帮助。

有人可以帮我解决这个问题吗?

由于

1 个答案:

答案 0 :(得分:0)

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; $$;

(注意,我还没有为这些可读的格式化而烦恼。不要在实际代码中将这些函数写在一行中。)