22 ユーザー定義集計関数インタフェース

ユーザー定義の集計関数を定義するには、これらのルーチンを実装する必要があります。各ルーチンは、オブジェクト型のメソッドとして実装します。その後、CREATE FUNCTION文を使用して実際に集計関数を作成します。

22.1 ユーザー定義集計関数

ここで説明するメソッドは、オブジェクト型のメソッドとして実装します。実際に集計関数を作成するには、CREATE FUNCTION文を使用します。表22-1に、これらの関数を示します。

表22-1 ユーザー定義集計関数の概要

ファンクション 説明

ODCIAggregateDelete()

現行のグループから入力値を削除します。

ODCIAggregateInitialize()

実装オブジェクト型の集計コンテキストとインスタンスを初期化し、OUTパラメータとして戻します。

ODCIAggregateIterate()

入力値を処理し、更新してから集計コンテキストを戻すことで、入力行全体を反復します。

注意: ODCIAggregateIterateは、null値に対しては起動されません。

ODCIAggregateMerge()

ユーザー定義集計のシリアル評価中またはパラレル評価中に、2つの集計コンテキストをマージして1つのオブジェクト・インスタンスにします。

ODCIAggregateTerminate()

集計計算の結果を計算し、メモリーの解放などの必要なクリーン・アップをすべて実行します。

ODCIAggregateWrapContext()

現行の集計コンテキストの外部ピースをすべて統合し、コンテキストを自己完結型にします。

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

ルーチンにより初期化される集計コンテキスト。この値は、標準集計の場合はNULLです。ウィンドウ集計の場合、actxは前のウィンドウのコンテキストです。このオブジェクト・インスタンスは、次の集計ルーチンにパラメータとして渡されます。

戻り値

正常終了した場合は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

各種オプションを示すビット・ベクター。ODCI_AGGREGATE_REUSE_CTXの設定ビットは、コンテキストが再利用され、外部コンテキストが解放されないことを示します。

戻り値

正常終了した場合は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

関連項目:

このファンクションの使用方法の詳細は、大規模な集計コンテキストの処理を参照してください。