2012-04-02 9 views
0

ビュー内で関数を呼び出して仮想列を解決したいと思います。計算は実際の行のデータに依存し、データを複数回選択する必要はありません。これは正しいです??ボーナスのように、別のコール内で可能なコール機能ですか?ビュー内で関数を呼び出す方法

CREATE VIEW my_view AS SELECT c.column1,c.columns2,... my_function(c) FROM my_table c 

CREATE VIEW my_view AS SELECT c.money, c.quantity,... my_ratio_function(c.money,c.quantity,select sum_all_pays(my_view)) FROM my_table c 

注意。私がここに置かれているのは、探しているときに見つけられないからです。あなたは他のアイデアがあればそれを入れてください。 2番目のコマンドが正しいかどうかわからない。

+0

なぜテストしないのですか?あなたはそれを知っているよりも。 VIEWは単にハードコードされたSELECTです。 –

答えて

1

ビュー定義で関数を使用することは問題ありません。唯一の制約 - 実際には関数呼び出しであるカラムに明示的な名前を付けるべきです。そうでなければ、PostgreSQLはビュー定義をどのように表示するかを知りません。

ただし、ビュー内からビューを参照することはできません。代わりに、2つのビューを作成して、外側のビューから内側のビューを参照することができます。もう1つの方法は、WITH constructを使用することです。これは非常に便利であり、多くを使用します。

ビューは単にサーバーに格納されたSQLであり、ビューを照会するたびに関数が各行に対して呼び出されることに注意してください。パフォーマンスを向上させるには、関数をIMMUTABLE or as STABLEとして定義するとよいでしょう。

私はフランクに同意します - あなたの意見を試してみてください。

関連する問題