我有一个功能,我需要根据inputid做不同的选择。所以我添加了以下条件。
....
begin
IF(iv_binrocess = 1 AND IsNull(iv_binno,'') != '') THEN
...//some process here
END If;
...
End
当我运行该功能时,我收到错误“
错误:“IF”处或附近的语法错误 我提到了许多网站和教程,没有任何帮助。
有人可以帮我解决这个问题吗?
由于
答案 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; $$;
(注意,我还没有为这些可读的格式化而烦恼。不要在实际代码中将这些函数写在一行中。)