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
。
関連項目:
この関数の使用方法の詳細は、大規模な集計コンテキストの処理を参照してください。