创建一个功能。错误:语法错误在或附近&#34 ;;"或错误:未指定语言

时间:2014-03-31 00:17:00

标签: sql postgresql

所以我第一次在PostgreSQL中创建了一个函数,我遇到了语法问题或者确切地放了分号;

该功能如下所示:

CREATE OR REPLACE FUNCTION func(name1 TEXT, int1 INTEGER) RETURNS TEXT AS $$

DECLARE new_name TEXT;
DECLARE int2 INTEGER;

BEGIN

...
Some SELECT FROM table queries
...

IF int2 < int1 THEN
    new_name := func(new_name, int1);
ELSE IF int2 = int1 THEN
    RETURN new_name;
ELSE
    RETURN name1;
END IF;

END;

$$ LANGUAGE plpgsql;

如果我尝试提交此内容,我会

ERROR:  syntax error at or near ";"
LINE 24: END;
            ^

如果我在END之后删除分号

ERROR:  syntax error at end of input
LINE 26: $$ LANGUAGE plpgsql;
         ^

如果我在END之后删除分号并在$$之后插入一个

$$; LANGUAGE plpgsql;
ERROR:  no language specified
ERROR:  syntax error at or near "LANGUAGE"
LINE 1: LANGUAGE plpgsql;
        ^

发现问题。应该是ELSEIF而不是ELSE IF

2 个答案:

答案 0 :(得分:2)

发现问题:

应该是ELSEIF而不是ELSE IF

答案 1 :(得分:0)

您将要删除除第一个DECLARE语句之外的所有语句。

CREATE OR REPLACE FUNCTION func(name1 TEXT, int1 INTEGER) RETURNS TEXT AS $$

DECLARE
new_name TEXT;
int2 INTEGER;
BEGIN
...
END;

$$ LANGUAGE plpgsql;

我还强烈建议您在变量和参数前加上v_或p_的前缀,这样就不会让它们与列名混淆(这是完全可能的)。