17.00 - 17.05 - FNC_TblOptOut - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL外部ルーチン プログラミング

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)

目的

行を戻す処理に参加しないテーブル関数のコピーによって呼び出されます。

構文

int
FNC_TblOptOut(void)

戻り値

呼び出し結果 FNC_TblOptOutが戻す値
成功 0
失敗 -1

これは、テーブル関数が誤ったモードまたはフェーズでFNC_TblOptOutを呼び出したときに起きることがあります。

有効な呼び出しモード

このライブラリ関数は、FNC_GetPhaseの戻り値がTBL_MODE_CONSTである場合に使用します。これはSELECT文が定数式入力引数のあるテーブル関数を呼び出したことを示します。

例えば、次のようになります。

SELECT *
FROM TABLE (table_function_1('STRING_CONSTANT'))
AS table_1;

使用上の注意

テーブル関数のすべてのコピーがFNC_TblOptOutを呼び出す場合、このステップは、行が作成されず、結果が空の派生テーブルであるかのように終了します。

制限

この関数は、テーブル関数内からのみ呼び出すことができます。この関数をスカラー関数、集約関数、UDM、または外部ストアド プロシージャから呼び出すと、トランザクションで例外が発生します。

この関数の呼び出しは、テーブル関数がFNC_GetPhaseを呼び出し、以下の値を取得する場合にのみ有効です。
  • モードとしてTBL_MODE_CONSTの戻り値
  • 処理フェーズとしてTBL_PRE_INITまたはTBL_INITの値

テーブル関数は、FNC_TblOptOutを一度しか呼び出すことができません。

FNC_TblOptOutの使用例

FNC_Phase    Phase;

if (FNC_GetPhase(&Phase) == TBL_MODE_CONST)
{
   switch(Phase)
   {
      case TBL_PRE_INIT:

         switch (FNC_Tbl_FirstParticipant() )
         {
            case 1:   /* participant */
               return;
            case 0:  /* not participant */
               if (FNC_TblOptOut()) 
                  strcpy(sqlstate, "U0006"); /* an error return */
               return;
            default:  /* -1 or other error */
               strcpy(sqlstate, "U0007");
               return;
         }
      ...
   }
   ...
}