2016-06-15 5 views
0

DECLAREブロックとBEGIN-ENDブロックをすべて空にして文字列を返そうとしても、この関数をCreateにできないようです。私がここで間違ったことを誰かが助けてくれますか?plpgsql CREATE FUNCTION構文エラー、または '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

あなたは何か間違っている - 私のコンプに問題なく動作しています。サーバーに複数のステートメントを送信しようとすると、おそらくセミコロンがありません。 –

答えて

1

を、 "コード"タブを選択した場合は、(つまり、DECLAREで始まり、END;で終わる)の部分だけを入力する必要があります。パラメータ、戻り値の型などは他のタブで定義されています。

関連する問題