2011-11-11 14 views
0

私はこの機能を作成しましたが、変数view_sizeは列として扱われています。なぜ変数が列のように扱われているのですか?

私はcolumn view_size don't exists.

なぜというエラーを取得していますか?

コンテキストを変更すると動作します(例:クエリのみが変数のように扱われます)。

CREATE OR REPLACE FUNCTION create_view(view_size INTEGER) RETURNS VOID 
AS $$ 
BEGIN 
    CREATE VIEW token_relation 
    AS 
    SELECT * FROM textblockhastoken  
    ORDER BY textblockid, sentence, position 
    LIMIT view_size; 
END 
$$ 
LANGUAGE plpgsql; 
+0

変数は次のように宣言する必要があります。@view_size変数とは何の関係も持っていないです – tmjam

+1

をint型宣言。 DDL文 'CREATE VIEW'は変数をとらない。テキストを入力する必要があります。それが@ aingramの答えがこの問題を解決する理由です。 –

答えて

2

代わりにこれを試してみてください:私が思う

CREATE OR REPLACE FUNCTION create_view(view_size INTEGER) RETURNS VOID 
AS $$ 
BEGIN 
    EXECUTE 'CREATE VIEW token_relation 
    AS 
    SELECT * FROM textblockhastoken 
    ORDER BY textblockid, sentence, position 
    LIMIT ' || view_size; 
END 
$$ 
LANGUAGE plpgsql; 
関連する問題