所以我第一次在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
答案 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_的前缀,这样就不会让它们与列名混淆(这是完全可能的)。