void function_name ( FNC_Phase aggregation_phase, FNC_Context_t *function_context, type_1 *input_parameter_1, ..., type_n *input_parameter_n, result_type *result, int *indicator_parameter_1, ..., int *indicator_parameter_n, int *indicator_result, char sqlstate[6], SQL_TEXT function_name[m], SQL_TEXT specific_function_name[l], SQL_TEXT error_message[p] ) { ... }
説明
パラメータ | 指定内容 | 入力/ 出力 |
---|---|---|
FNC_Phase aggregation_phase | 現在の集約フェーズ。集約フェーズは、集約関数において渡されたデータを処理する方法を決定します。 FNC_Phaseは次のように定義されています。 typedef enum { AGR_INIT = 1, AGR_DETAIL = 2, AGR_COMBINE = 3, AGR_FINAL = 4, AGR_NODATA = 5, AGR_MOVINGTRAIL = 6 } FNC_Phase; 集約フェーズの詳細について、ウィンドウ集約関数の基本アルゴリズムを参照してください。 |
入力 |
FNC_Context_t * function_context | 関数コンテキスト構造体へのポインタ。これは、集約関数の実行の対象となるグループの中間集約記憶域として使用されるものです。 FNC_Context_tは、次のように定義されています。 typedef struct FNC_Context_t { int version; FNC_flags_t flags; void *interim1; int intrm1_length; void *interim2; int intrm2_length; long group_count; long window_size; long pre_window; long post_window; } FNC_Context_t; 関数を呼び出す前に、Teradata Databaseは以下のフィールドをセットアップします。 これらのフィールドは、関数の操作対象になる行のウィンドウを定義するために使用します。
ウィンドウ集約関数に適用できるFNC_Context_tフィールドの詳細について、FNC_Context_tフィールドを参照してください。 |
入力 |
type_n * input_parameter_n | 入力パラメータ。nはCREATE FUNCTION定義に含まれるパラメータの数です。n = 0なら、入力パラメータはありません。このデータ型は、sqltypes_td.h内のCデータ型のうち、入力引数のSQLデータ型に対応するものです。 入力パラメータの数は最大128個です。 |
入力 |
result_type * result | 結果。 resultは、関数の戻す結果を入れる十分な大きさのデータ領域へのポインタです。そのデータ領域は、対応するCREATE FUNCTION文のRETURNS句で定義されるものです。 |
出力 |
int * indicator_parameter_n | 入力パラメータに同じ順序で対応するインジケータ パラメータ(n > 0の関数の場合)。 インジケータ引数の値。
|
入力 |
int * indicator_result | 結果に対応する結果インジケータ パラメータ。 | 出力 |
char sqlstate[6] | 成功、例外、または警告を示す戻り値。これは、6文字のC文字列へのポインタです(最初の5文字はASCII、最後の文字はCのNULL文字)。関数でエラーを検出した場合、関数でsqlstateをSQLSTATEの例外または警告に設定できます。 この文字列の初期値は'00000' (成功)です。 |
出力 |
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です。 | 出力 |