このメソッドは、テーブル関数の現在のモードを戻し、phase引数の最初の要素の現在のフェーズ値も戻します。
引数
getPhase()が戻すことができる処理フェーズは、モードによって異なります。
モード | フェーズ | 意味 |
---|---|---|
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()を呼び出すときに入ります。関数がユーザーによるアボートなど、外的な理由によってアボートされる場合は入りません。 |
戻り値
値 | 意味 |
---|---|
Tbl.TBL_MODE_CONST | テーブルUDF引数は定数です。 |
Tbl.TBL_MODE_VARY | テーブルUDF引数は変数であり、値は、SELECT文の相関テーブル指定によって生成された行に基づきます。 このモードでは、テーブルUDFは特定のAMP vproc上でのみ呼び出されます。 |