このメソッドは、テーブル関数の現在のモードと、phase引数の最初の要素の現在のフェーズ値を返します。
getPhase()が戻すことができる処理フェーズは、モードによって異なります:
Mode | 意味 |
---|---|
Tbl.TBL_MODE_CONST | テーブルUDF引数は定数です。 |
Tbl.TBL_MODE_VARY | テーブルUDF引数は変数であり、値は、SELECT文の相関テーブル指定によって生成された行に基づきます。 このモードでは、テーブルUDFは特定のAMP vproc上でのみ呼び出されます。 |
構文
getPhase(int[] phase)
構文要素
- phase
-
モード phase 意味 Tbl.TBL_MODE_VARY Tbl.TBL_PRE_INIT UDFテーブルは、対象になるすべての行の初めに呼び出されます。UDFの入力引数には、最初のセットのデータが含まれます。 このフェーズでは、UDFが総合的なグローバル コンテキストを設定する機会を持つことになりますが、結果行は作成しません。
UDFはTBL_INITフェーズに進みます。
Tbl.TBL_INIT UDFの入力引数には、最初のセットのデータが含まれます。 このフェーズでは、UDFは結果行を作成しません。
UDFはTBL_BUILDフェーズに進みます。
Tbl.TBL_BUILD UDFは結果の引数を完成して行を作成します。 UDFは、SQLExceptionをスローし、sqlstate引数を"02000" (データがないことを示す値)に設定するまで、TBL_BUILDフェーズのままです(そのように設定した時点でTBL_FINIフェーズに進みます)。
Tbl.TBL_FINI 変数入力データがさらにある場合、UDFはTBL_INITフェーズに戻ります。そうでない場合、UDFはTBL_ENDフェーズに進みます。 Tbl.TBL_END テーブル関数は、このフェーズの後に再度呼び出されることはありません。 Tbl.TBL_ABORT テーブルUDFはアボートされています。UDFはこのフェーズでいつでも呼び出すことができます。このフェーズには、テーブルUDFのコピーがTbl.abort()を呼び出すときに入ります。関数がユーザーによるアボートなど、外的な理由によってアボートされる場合は入りません。 Tbl.TBL_MODE_CONST Tbl.TBL_PRE_INIT UDFは、関数を他のAMP vproc上で実行するすべてのテーブル関数の制御コピーとするかどうかを判別できます。 関数でテーブル関数の他のすべてのコピーに制御コンテキストを提供したい場合、関数はTbl.control()を呼び出す必要があります。
関数をテーブル関数の制御コピーにしたくない場合、または関数が制御関数を必要としないように設計されている場合、関数は単に戻るだけで、このフェーズでは何も実行しません。
テーブル関数のすべてのコピーは、いずれかのコピーがTBL_INITフェーズに進む前にこのフェーズを完了する必要があります。
Tbl.TBL_INIT それ以降は参加しないUDFのコピーでは、Tbl.optOut()を呼び出す必要があります。関数が戻った後、再度呼び出されることはありません。 テーブルUDFのすべてのコピーは、いずれかのコピーがTBL_BUILDフェーズに進む前にこのフェーズを完了する必要があります。
Tbl.TBL_BUILD テーブルUDFは結果の引数を完成してローを作成します。 関数は、SQLExceptionをスローし、sqlstate引数を"02000" (データがないことを示す値)に設定するまで、Tbl.TBL_BUILDフェーズのままです(そのように設定した時点でTbl.TBL_ENDフェーズに進みます)。
Tbl.TBL_END テーブル関数は、このフェーズから戻った後に再度呼び出されることはありません。 テーブル関数の制御コピーが存在する場合、それはテーブル関数の他のすべてのコピーがこのフェーズを完了した後にこのフェーズで呼び出されます。これにより制御関数は、最終クリーンアップまたは外部への通知を実行できます。
Tbl.TBL_ABORT テーブルUDFはアボートされ、必要な場合はクリーンアップを実行する必要があります。関数はこのフェーズでいつでも呼び出すことができます。このフェーズには、テーブル関数のいずれかのコピーがTbl.abort()を呼び出すときに入ります。関数がユーザーによるアボートなど、外的な理由によってアボートされる場合は入りません。