3
の私は8.4のverのPostgreSQLを使用していますが、次のカスタムのグループ化機能を書かれている:PostgreSQLの機能:最後の文が返すbigint型の代わりに整数
CREATE OR REPLACE FUNCTION custom_group(integer)
RETURNS TABLE (
grp INTEGER,
entry_date DATE,
col1 REAL,
col2 REAL,
col3 REAL,
col4 REAL,
col5 INTEGER,
col6 INTEGER) AS
$BODY$
SELECT ceil(rank() OVER (ORDER BY entry_date)/$1)::int as grp
,entry_date, col1, col2, col3, col4, col5, col6
FROM table_foo
ORDER BY 1;
$BODY$ LANGUAGE SQL;
私はpsqlを使用してに機能をインポートしようとすると、私は次の取得エラー:
Final statement returns bigint instead of integer
私はエラーメッセージを理解できません。特にRECORD(ウェルテーブル)タイプをお待ちしております。
エラーの原因は何ですか。これを修正するにはどうすればよいですか。
[[編集]]
コメントで提案されているように私は、しかし、私は同じエラーを得た、BIGINTにGRPのデータ型を変更しました。詳細は:
ERROR: return type mismatch in function declared to return record
DETAIL: Final statement returns integer instead of bigint at column 1.
CONTEXT: SQL function "custom_group"
私の推測では、 'ceil()'は 'bigint'を返し、' grp'を 'int'として定義しています。リターンテーブル定義で 'grp'を' bigint'に変更してみてください。 –
@juergend:私はそれを試みましたが、エラーはまだ残っています。私の編集した質問を見てください。 –
[この](http://sqlfiddle.com/#!1/8f80f/1)の例を変更してエラーを再現できますか? (新しいリンクをポストバックする) –