テーブル関数の構文 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/qwr1571437338192.ditamap
dita:ditavalPath
ja-JP/qwr1571437338192.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage
void  function_name  (  type_1        *input_parameter_1,
                      ...,
                     type_n        *input_parameter_n,
                     result_type_1  *result_1,
                      ...,
                     result_type_r  *result_r,
                     int           *indicator_parameter_1,
                      ...,
                     int           *indicator_parameter_n,
                     int           *indicator_result_1,
                      ...,
                     int           *indicator_result_r,
                     char           sqlstate[6],
                     SQL_TEXT       function_name[m],
                     SQL_TEXT       specific_function_name[l],
                     SQL_TEXT       error_message[p] )
{
     ...
}

説明

パラメータ 指定内容 入力/ 出力
type_n * input_parameter_n 入力引数。nはCREATE FUNCTION定義またはREPLACE FUNCTION定義に含まれるパラメータの数です。n = 0なら、入力パラメータはありません。このデータ型は、sqltypes_td.h内のCデータ型のうち、入力引数のSQLデータ型に対応するものです。 入力
result_type_r * result_r 行の結果引数。rは、対応するCREATE FUNCTION定義またはREPLACE FUNCTION定義によって決定されます。

テーブル関数が動的な結果行指定により定義されている場合

  • rは、対応するCREATE FUNCTION定義のRETURNS TABLE句の列リスト内の列数です。
  • それぞれの結果型は、sqltypes_td.h内のC型で、CREATE FUNCTION文内の対応する列のSQLデータ型に一致します。
  • それぞれのresult_rは、CREATE FUNCTION文のRETURNS TABLE句内の対応する列の型の値に十分な大きさのデータ領域へのポインタです。
テーブル関数が動的な結果ロー指定により定義されている場合
  • rは、対応するCREATE FUNCTION定義のRETURNS TABLE VARYING COLUMNS句の列の最大数です。
  • 結果行の引数の実際のデータ型は関数が呼び出されるまで不明なため、それぞれのresult_rポインタは、voidポインタとして宣言される必要があります。
  • 実行中、テーブル関数は、FNC_TblGetColDefライブラリ関数を呼び出し、実際の結果タイプを取得することができます。
  • それぞれのresult_rポインタは、テーブル関数を呼び出すSELECT文の対応する列型の値に対して十分な大きさのデータ領域をポイントします。

この関数は少なくとも1つの結果引数を戻さなければなりません。

出力
int * indicator_parameter_n 入力引数に同じ順序で対応するインジケータ引数(n > 0の関数の場合)。

インジケータ引数の値。

  • -1であれば、対応する入力引数はNULLです。
  • 0であれば、対応する入力引数は値です。
入力
int * indicator_result_r 関数が対応する結果引数を戻す必要があるかどうか。

インジケータ引数の値。

  • -1であれば、対応する結果引数はこの関数によって戻される必要がありません。

    動的な結果行指定で定義されるテーブル関数では、値-1は、テーブル関数を呼び出したSELECT文で対応する結果引数が省略されたことを意味しています。

  • 0であれば、対応する結果引数は関数によって戻される必要があります。

関数が結果引数としてNULLを戻す場合、その関数では、対応するインジケータ引数を-1に設定する必要があります。

入出力
char sqlstate[6] 成功、例外、または警告を示す戻り値。これは、6文字のC文字列へのポインタです(最初の5文字はASCII、最後の文字はCのNULL文字)。関数でエラーを検出した場合、関数でsqlstateをSQLSTATEの例外または警告に設定できます。

この文字列の初期値は'00000' (成功)です。

SQLSTATE値の詳細は、SQLSTATEの値を戻すを参照してください

出力
SQL_TEXT function_name[m] 関数名。これはC文字列へのポインタです。これは、CREATE FUNCTION function_nameで指定される関数名と同じ名前です。

関数の中では、この名前を使用してエラー メッセージを作成できます。

ANSI SQL標準では、mの最大値は128と定義されています。Teradata Databaseでは、関数名は最大30文字です。

入力
SQL_TEXT specific_function_name[l] 同じ名前の関数が複数個ある場合、呼び出す外部関数の特定名。これはC文字列へのポインタです。これは、CREATE FUNCTION文のSPECIFIC句で指定する特定名と同じ名前です。

CREATE FUNCTION文にSPECIFIC句が含まれていない場合、この名前は、CREATE FUNCTION function_nameで指定される関数名と同じです。

関数の中では、この名前を使用してエラー メッセージを作成できます。

ANSI SQL標準では、lの最大値は128と定義されています。Teradata Databaseでは、関数名は最大30文字です。

入力
SQL_TEXT error_message[p] エラー メッセージのテキスト。これは、C文字列へのポインタであり、pの最大値は256です。 出力