FNC_Mode FNC_GetPhaseEx(FNC_Phase *Phase, int option)
構文要素
- Phase
- 関数が呼び出された処理フェーズと、テーブル関数が実行すべきアクション。
- FNC_Phaseは次のように定義されています。
typedef enum FNC_Phase { TBL_PRE_INIT=20, TBL_INIT=21, TBL_BUILD=22, TBL_FINI=23, TBL_END=24, TBL_ABORT=25, TBL_BUILD_EOF=26 } FNC_Phase;
- FNC_Phase値の意味については、処理フェーズを参照してください。
- option
- 0から5の値。
- sqltypes_td.hヘッダー ファイルでは、以下の定数が用意されています。
#define TBL_NOOPTIONS 0 #define TBL_LASTROW 1 #define TBL_NEWROW 2 #define TBL_NEWROWEOF 4
- 値3は、TBL_NEWROWとTBL_LASTROWの両方のオプションを指定します。
- 値5は、TBL_NEWROWEOFとTBL_LASTROWの両方のオプションを指定します。
- 変数モードのテーブル関数にのみ、以下のオプションが有効になります。これらのオプションは、定数モードのテーブル関数に指定しても無視されます。
Options 値 説明と使用法 TBL_NOOPTIONS 0 指定されたオプションがないことを示します。 このオプションは、この関数を呼び出した処理フェーズを取得する必要がある場合にのみ使用してください。
TBL_LASTROW 1 関数がAMP上の最後の入力行が渡されたことを判断できるようになります。 このオプションは、テーブル関数が出力行を返す前に、入力行のセット処理をする場合に使用してください。最後の行を検出したときにTBL_LASTROWを使用して処理の終了を知らせる場合は、EOF識別子を設定する必要があります。その後、この関数はTBL_BUILDフェーズから、行を構築するTBL_BUILD_EOFフェーズに移行します。
TBL_NEWROW 2 このオプションが設定してあり、フェーズがTBL_BUILDのときには、TBL_BUILDフェーズの新しい行を指定して、この関数が呼び出されます。 このオプションは、関数が呼び出される度に、新しい行を取得する必要がある場合に使用してください。
ファイルの終端、つまりTBL_LASTROWまたはProcessLastRowが真の場合、このオプションは無視されます。
TBL_NEWROWとTBL_LASTROW 3 TBL_NEWROWとTBL_LASTROWの両方のオプションの動作が有効になります。 TBL_NEWROWEOF 4 このオプションが設定してあり、フェーズがTBL_BUILDでEOFが設定されているときには、TBL_BUILDフェーズの新しい行を指定して、この関数が呼び出されます。 このオプションは、EOFの合図が送られてきたときに新しい行を取得する必要がある場合に使用してください。
ファイルの終端、つまりTBL_LASTROWまたはProcessLastRowが真の場合、このオプションは無視されます。
TBL_NEWROWEOFとTBL_LASTROW 5 TBL_NEWROWEOFとTBL_LASTROWの両方のオプションの動作が有効になります。 - 例えば、オプションTBL_NOOPTIONSを指定してFNC_GetPhaseExを呼び出しても、TBL_NEWROWまたはTBL_NEWROWEOFの動作設定が解除されることはありません。
- TBL_LASTROWを指定すると、リクエストの継続中はこのオプションが維持されます。TBL_NEWROWとTBL_NEWROWEOFのオプションは、FNC_GetPhaseExに指定されたオプション(オプションの値が非0の場合)に基づいて、設定および設定解除されます。