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 
+0

你正在做一些错误 - 它在我的比赛中没有任何问题。可能您尝试将更多的语句发送给服务器,并且缺少分号。 –

如果要创建通过功能 “新功能...” 屏幕,标签“代码”,那么你只需要输入两个$$之间的部分(即从DECLARE开始并以END;结尾)。参数,返回类型等在其他选项卡中定义。