6

私は PostgreSQL バージョン 8.4 を使用しており、次のカスタム グループ化関数を作成しました。

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 を使用して関数をインポートしようとすると、次のエラーが発生します。

最後のステートメントは、integer ではなく bigint を返します

特にRECORD(ウェルテーブル)タイプが返されることを期待しているため、エラーメッセージがわかりません。

エラーの原因と、これを修正するにはどうすればよいですか?

[[編集]]

コメントで提案されているように、grp データ型を BIGINT に変更しましたが、同じエラーが発生しました。詳細:

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"
4

1 に答える 1

1

編集後、別のエラーが発生しています。列 1 を に明示的にキャストし、 であると宣言したため、この新しいエラーが発生するはずです。私の推測では、あなたの元の問題は.intbigintcol5col6table_foobigint

于 2012-05-12T13:49:30.750 に答える