plpgsql在'CREATE'处或附近创建函数语法错误
问题描述:
即使我清空所有DECLARE块和BEGIN-END块并尝试返回一个字符串,似乎也无法将此函数用于创建。任何人都可以帮我解决我在这里做错了什么吗?plpgsql在'CREATE'处或附近创建函数语法错误
试图在pgAdminIII执行此(Ubuntu的):
CREATE OR REPLACE FUNCTION split_country()
RETURNS text as $$
DECLARE
titlecsv text;
arCountries text[];
country_cursor CURSOR
FOR SELECT DISTINCT country
FROM festfriend.films;
BEGIN
OPEN country_cursor;
LOOP
FETCH NEXT FROM country_cursor INTO titlecsv;
EXIT WHEN NOT FOUND;
SELECT regexp_split_to_array(titlecsv, ',') INTO arCountries;
RAISE NOTICE '%1', arCountries;
INSERT INTO festfriend.country (name, acronym)
SELECT trim(both ' ' from a.column2), upper(left(trim(both ' ' from a.column2), 3))
FROM unnest((SELECT arCountries)::text[]) WITH ORDINALITY a(column2)
WHERE (SELECT COUNT(id) FROM festfriend.country WHERE name = trim(both ' ' from a.column2)) = 0
AND char_length(trim(both ' ' from a.column2)) > 0;
END LOOP;
CLOSE country_cursor;
RETURN 'Split Countries, yo!';
END; $$
LANGUAGE 'plpgsql';
得到以下错误:
ERROR: syntax error at or near "CREATE"
LINE 1: CREATE OR REPLACE FUNCTION split_country()
^
********** Error **********
ERROR: syntax error at or near "CREATE"
SQL state: 42601
Character: 1
答
如果要创建通过功能 “新功能...” 屏幕,标签“代码”,那么你只需要输入两个$$
之间的部分(即从DECLARE
开始并以END;
结尾)。参数,返回类型等在其他选项卡中定义。
你正在做一些错误 - 它在我的比赛中没有任何问题。可能您尝试将更多的语句发送给服务器,并且缺少分号。 –