この章では、ユーザー定義集計関数を定義するために実装する必要のあるルーチンについて説明します。各ルーチンは、オブジェクト型のメソッドとして実装します。その後、CREATE FUNCTION
文を使用して実際に集計関数を作成します。
この章の内容は、次のとおりです。
この項で説明するメソッドは、オブジェクト型のメソッドとして実装します。実際に集計関数を作成するには、CREATE FUNCTION
文を使用します。表22-1に、これらの関数を示します。
表22-1 ユーザー定義集計関数の概要
関数 | 説明 |
---|---|
|
現行のグループから入力値を削除します。 |
|
実装オブジェクト型の集計コンテキストとインスタンスを初期化し、 |
|
入力値を処理し、更新してから集計コンテキストを戻すことで、入力行全体を反復します。 |
|
ユーザー定義集計のシリアル評価中またはパラレル評価中に、2つの集計コンテキストをマージして1つのオブジェクト・インスタンスにします。 |
|
集計計算の結果を計算し、メモリーの解放などの必要なクリーン・アップをすべて実行します。 |
|
現行の集計コンテキストの外部ピースをすべて統合し、コンテキストを自己完結型にします。 |
現行のグループから入力値を削除します。このルーチンは、集計コンテキストと実行中に削除される入力値を渡すことでOracleにより起動されます。このルーチンは入力値を処理し、集計コンテキストを更新し、コンテキストを戻します。これはオプション・ルーチンであり、メンバー・メソッドとして実装されます。
構文
MEMBER FUNCTION ODCIAggregateDelete( self IN OUT <impltype>, val <inputdatatype>) RETURN NUMBER
パラメータ | IN/OUT | 説明 |
---|---|---|
self |
IN OUT |
入力の場合は現行の集計コンテキストの値、出力の場合は更新済の値。 |
val |
IN |
現行のグループから削除される入力値。 |
戻り値
正常終了した場合はODCIConst.Success
、エラーの場合はODCIConst.Error
。
実装オブジェクト型の集計コンテキストとインスタンスを初期化し、OUT
パラメータとして戻します。このルーチンは静的メソッドとして実装します。
構文
STATIC FUNCTION ODCIAggregateInitialize( actx IN OUT <impltype>) RETURN NUMBER
パラメータ | IN/OUT | 説明 |
---|---|---|
actx |
IN OUT |
ルーチンにより初期化される集計コンテキスト。この値は、標準集計の場合はNULL です。ウィンドウ集計の場合、actx は前のウィンドウのコンテキストです。このオブジェクト・インスタンスは、次の集計ルーチンにパラメータとして渡されます。 |
戻り値
正常終了した場合はODCIConst.Success
、エラーの場合はODCIConst.Error
。
入力値を処理し、更新してから集計コンテキストを戻すことで、入力行全体を反復します。NULL
を含めて値ごとに起動されます。これは必須ルーチンであり、メンバー・メソッドとして実装されます。
構文
MEMBER FUNCTION ODCIAggregateIterate( self IN OUT <impltype>, val <inputdatatype>) RETURN NUMBER
パラメータ | IN/OUT | 説明 |
---|---|---|
self |
IN OUT |
入力の場合は現行の集計コンテキストの値、出力の場合は更新済の値。 |
val |
IN |
集計される入力値。 |
戻り値
正常終了した場合はODCIConst.Success
、エラーの場合はODCIConst.Error
。
ユーザー定義集計のシリアル評価中またはパラレル評価中に、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
。
集計計算の結果を計算し、メモリーの解放などの必要なクリーン・アップをすべて実行します。Oracleにより集計計算の最終ステップとして起動されます。これは必須ルーチンであり、メンバー・メソッドとして実装されます。
構文
MEMBER FUNCTION ODCIAggregateTerminate( self IN <impltype>, ReturnValue OUT <return_type>, flags IN number) RETURN NUMBER
パラメータ | IN/OUT | 説明 |
---|---|---|
self |
IN |
集計コンテキストの値。 |
ctx2 |
OUT |
結果的な集計値。 |
flags |
IN |
各種オプションを示すビット・ベクター。ODCI_AGGREGATE_REUSE_CTX の設定ビットは、コンテキストが再利用され、外部コンテキストが解放されないことを示します。 |
戻り値
正常終了した場合はODCIConst.Success
、エラーの場合はODCIConst.Error
。
現行の集計コンテキストの外部ピースをすべて統合し、コンテキストを自己完結型にします。ユーザー定義集計が外部コンテキストを持つように宣言されており、スレーブ・プロセスから部分集計を送信している場合に、Oracleにより起動されます。これはオプション・ルーチンであり、メンバー・メソッドとして実装されます。
構文
MEMBER FUNCTION ODCIAggregateWrapContext( self IN OUT <impltype>) RETURN NUMBER
パラメータ | IN/OUT | 説明 |
---|---|---|
self |
IN |
入力の場合は現行の集計コンテキストの値、出力の場合は自己完結型の結合済集計コンテキスト。 |
戻り値
正常終了した場合はODCIConst.Success
、エラーの場合はODCIConst.Error
。