ユーザー定義集計関数は、一連の ODCIAggregate ルーチンによって実装されます。これらのルーチンはオブジェクト型のメソッドとして利用でき、CREATE FUNCTION ステートメントを使用して集計関数を作成できます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
OceanBaseデータベースの現行バージョンがサポートする ODCIAggregate ルーチンは以下のとおりです:
ODCIAggregateInitialize()ODCIAggregateIterate()ODCIAggregateMerge()ODCIAggregateTerminate()
ODCIAggregateInitialize()
ODCIAggregateInitialize()は、集計コンテキストとオブジェクト型のインスタンスを初期化し、OUTパラメータとして返すために使用されます。これは静的メソッドです。
構文
STATIC FUNCTION ODCIAggregateInitialize(
actx IN OUT <impltype>)
RETURN NUMBER
パラメータの説明
| パラメータ | In/Out | 説明 |
|---|---|---|
| actx | IN OUT | 通常の集計の場合、この値はNULLです。ウィンドウ集計では、actxは前のウィンドウのコンテキストです。このオブジェクトインスタンスは、次の集計ルーチンにパラメータとして渡されます。 |
戻り値
成功した場合はODCIConst.Success、エラー発生時はODCIConst.Errorを返します。
ODCIAggregateIterate()
ODCIAggregateIterate()は、入力行をイテレーションして入力値を処理および更新し、集計コンテキストを返すために使用されます。これは強制ルーチンであり、メンバーメソッドとして実装されています。
構文
MEMBER FUNCTION ODCIAggregateIterate(
self IN OUT <impltype>,
val <inputdatatype>)
RETURN NUMBER
パラメータの説明
| パラメータ | In/Out | 説明 |
|---|---|---|
| self | IN OUT | 入力として使用される場合は、現在の集計コンテキストの値です。出力として使用される場合は、更新後の値です。 |
| val | IN | 集計対象の入力値です。 |
戻り値
成功した場合はODCIConst.Success、エラー発生時はODCIConst.Errorを返します。
ODCIAggregateMerge()
ユーザー定義の集計のシリアルまたはパラレル計算中に、ODCIAggregateMerge()は2つの集計コンテキストを単一のオブジェクトインスタンスにマージするために使用されます。これは強制ルーチンであり、メンバーメソッドとして実装されています。
構文
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を返します。
ODCIAggregateTerminate()
ODCIAggregateTerminate()は、集計結果を計算し、メモリ解放などの必要なクリーンアップを実行するために使用されます。これは強制ルーチンであり、メンバーメソッドとして実装されています。
構文
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を返します。