ユーザー定義集計関数は、一連の 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_AGGREGATEReuse_CTX の設定は、コンテキストが再利用されることを意味し、外部コンテキストを解放しないでください。 |
戻り値
成功時は ODCIConst.Success、エラー時は ODCIConst.Error を返します。