22 ユーザー定義集計関数インタフェース
ユーザー定義の集計関数を定義するには、これらのルーチンを実装する必要があります。各ルーチンは、オブジェクト型のメソッドとして実装します。その後、CREATE FUNCTION文を使用して実際に集計関数を作成します。
               
関連項目:
22.1 ユーザー定義集計関数
ここで説明するメソッドは、オブジェクト型のメソッドとして実装します。実際に集計関数を作成するには、CREATE FUNCTION文を使用します。表22-1に、これらの関数を示します。
                     
表22-1 ユーザー定義集計関数の概要
| ファンクション | 説明 | 
|---|---|
| 現行のグループから入力値を削除します。 | |
| 実装オブジェクト型の集計コンテキストとインスタンスを初期化し、 | |
| 入力値を処理し、更新してから集計コンテキストを戻すことで、入力行全体を反復します。 注意: ODCIAggregateIterateは、null値に対しては起動されません。 | |
| ユーザー定義集計のシリアル評価中またはパラレル評価中に、2つの集計コンテキストをマージして1つのオブジェクト・インスタンスにします。 | |
| 集計計算の結果を計算し、メモリーの解放などの必要なクリーン・アップをすべて実行します。 | |
| 現行の集計コンテキストの外部ピースをすべて統合し、コンテキストを自己完結型にします。 | 
22.1.1 ODCIAggregateDelete()
現行のグループから入力値を削除します。このルーチンは、集計コンテキストと削除対象の入力を渡すことで、Oracleによって起動されます。入力値を処理し、集計コンテキストを更新して、コンテキストを戻します。これはオプション・ルーチンであり、メンバー・メソッドとして実装されます。
構文
MEMBER FUNCTION ODCIAggregateDelete( self IN OUT <impltype>, val <inputdatatype>) RETURN NUMBER
| パラメータ | IN/OUT | 説明 | 
|---|---|---|
| self | IN OUT | 入力の場合は現行の集計コンテキストの値、出力の場合は更新済の値。 | 
| val | IN | 現行のグループから削除される入力値。 | 
戻り値
正常終了した場合はODCIConst.Success、エラーの場合はODCIConst.Error。
                        
22.1.2 ODCIAggregateInitialize()
実装オブジェクト型の集計コンテキストとインスタンスを初期化し、OUTパラメータとして戻します。このルーチンは静的メソッドとして実装します。
                        
構文
STATIC FUNCTION ODCIAggregateInitialize( actx IN OUT <impltype>) RETURN NUMBER
| パラメータ | In/Out | 説明 | 
|---|---|---|
| actx | IN OUT | ルーチンにより初期化される集計コンテキスト。この値は、標準集計の場合は | 
戻り値
正常終了した場合はODCIConst.Success、エラーの場合はODCIConst.Error。
                        
22.1.3 ODCIAggregateIterate()
入力値を処理し、更新してから集計コンテキストを戻すことで、入力行全体を反復します。これは必須ルーチンであり、メンバー・メソッドとして実装されます。
構文
MEMBER FUNCTION ODCIAggregateIterate( self IN OUT <impltype>, val <inputdatatype>) RETURN NUMBER
| パラメータ | IN/OUT | 説明 | 
|---|---|---|
| self | IN OUT | 入力の場合は現行の集計コンテキストの値、出力の場合は更新済の値。 | 
| val | IN | 集計される入力値。 | 
戻り値
正常終了した場合はODCIConst.Success、エラーの場合はODCIConst.Error。
                        
22.1.4 ODCIAggregateMerge()
ユーザー定義集計のシリアル評価中またはパラレル評価中に、2つの集計コンテキストをマージして1つのオブジェクト・インスタンスにします。これは必須ルーチンであり、メンバー・メソッドとして実装されます。
構文
MEMBER FUNCTION ODCIAggregateMerge( self IN OUT <impltype>, ctx2 IN <impltype>) RETURN NUMBER
| パラメータ | IN/OUT | 説明 | 
|---|---|---|
| self | IN OUT | 入力の場合は最初の集計コンテキストの値、出力の場合はマージされた2つの集計コンテキストの結果値。 | 
| ctx2 | IN | 第2の集計コンテキストの値。 | 
戻り値
正常終了した場合はODCIConst.Success、エラーの場合はODCIConst.Error。
                        
ユーザー定義集計がウィンドウ・ファンクションであり、ODCIAggregateMerge()の実装を作成できない場合は、ODCIConst.Errorを戻す必要があります。このエラーはOracleユーザー・エラーとして変換されます。 
                        
22.1.5 ODCIAggregateTerminate()
集計計算の結果を計算し、メモリーの解放などの必要なクリーン・アップをすべて実行します。Oracleにより集計計算の最終ステップとして起動されます。これは必須ルーチンであり、メンバー・メソッドとして実装されます。
構文
MEMBER FUNCTION ODCIAggregateTerminate( self IN <impltype>, ReturnValue OUT <return_type>, flags IN number) RETURN NUMBER
| パラメータ | IN/OUT | 説明 | 
|---|---|---|
| self | IN | 集計コンテキストの値。 | 
| ctx2 | OUT | 結果的な集計値。 | 
| flags | IN | 各種オプションを示すビット・ベクター。 | 
戻り値
正常終了した場合はODCIConst.Success、エラーの場合はODCIConst.Error。
                        
関連項目:
ODCI_AGGREGATE_REUSE_CTXフラッグ・ビットの設定の詳細は、「分析関数への集計コンテキストの再利用」を参照してください。
                           
22.1.6 ODCIAggregateWrapContext()
現行の集計コンテキストの外部ピースをすべて統合し、コンテキストを自己完結型にします。ユーザー定義集計が外部コンテキストを持つように宣言されており、スレーブ・プロセスから部分集計を送信している場合に、Oracleにより起動されます。これはオプション・ルーチンであり、メンバー・メソッドとして実装されます。
構文
MEMBER FUNCTION ODCIAggregateWrapContext( self IN OUT <impltype>) RETURN NUMBER
| パラメータ | IN/OUT | 説明 | 
|---|---|---|
| self | IN | 入力の場合は現行の集計コンテキストの値、出力の場合は自己完結型の結合済集計コンテキスト。 | 
戻り値
正常終了した場合はODCIConst.Success、エラーの場合はODCIConst.Error。
                        
関連項目:
このファンクションの使用方法の詳細は、「大規模な集計コンテキストの処理」を参照してください。