Postgresql Postgres-错误:语法错误位于或接近;如果;

Postgresql Postgres-错误:语法错误位于或接近;如果;,postgresql,Postgresql,我有一个函数,我需要根据inputid进行不同的选择。因此,我添加了如下条件 .... begin IF(iv_binrocess = 1 AND IsNull(iv_binno,'') != '') THEN ...//some process here END If; ... End 当我运行函数时,我得到了错误“ 错误:在“IF”处或附近出现语法错误 我参考了很多网站和教程,没有任何帮助 有人能帮我解决这个问题吗 感谢WAG,因为您删除了大部分重要信息:您试图创建一个具有PL/pgsq

我有一个函数,我需要根据inputid进行不同的选择。因此,我添加了如下条件

....
begin
IF(iv_binrocess = 1 AND IsNull(iv_binno,'') != '') THEN
...//some process here 
END If;
...
End
当我运行函数时,我得到了错误“

错误:在“IF”处或附近出现语法错误 我参考了很多网站和教程,没有任何帮助

有人能帮我解决这个问题吗

感谢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函数声明为
语言plpgsql

如果要使用SQL函数,请使用
大小写
表达式,而不是
If

CREATE FUNCTION test2() RETURNS integer LANGUAGE sql 
AS $$ SELECT CASE WHEN TRUE THEN 1 ELSE 0 END; $$;
(注意,我并没有费心将它们格式化为易读的格式。不要像这样在真实代码中一行编写所有函数。)

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函数声明为
语言plpgsql

如果要使用SQL函数,请使用
大小写
表达式,而不是
If

CREATE FUNCTION test2() RETURNS integer LANGUAGE sql 
AS $$ SELECT CASE WHEN TRUE THEN 1 ELSE 0 END; $$;

(注意,我并没有费心将它们格式化为易读的格式。在实际代码中,不要像这样在一行中编写所有函数。)

我怀疑您已经从发布的示例中剥离了足够多的代码来解决问题。请发布有关错误的完整代码。如果函数体中出现了
,您确定看到的是正确的
?请向我们展示您的完整代码。您的问题-不要在注释中发布代码或附加信息。另外,您添加了一个Postgres标记,但Postgres没有
IsNull
函数,它在Postgres中的等价物是
coalesce
–。我怀疑您已经从发布的示例中剥离了足够的代码来解决问题。请发布有关错误的完整代码。您确定看到的是正确的代码吗
IF
在函数体中?向我们展示您的完整代码。您的问题-不要在注释中发布代码或附加信息。此外,您添加了一个Postgres标签,但Postgres没有
IsNull
函数,它在Postgres中的等价物是
coalesce
–。