この例では、VARIANT_TYPEタイプの入力パラメータで定義されたC集約UDFを作成します。
最初に、integer_udtという名前の新しいDISTINCTデータ型を作成します。
CREATE TYPE integer_udt AS INTEGER FINAL;
さらに、VARIANT_TYPEの動的UDTタイプを指定した入力パラメータparameter_1を使用するudf_agch002002dynudtという名前の新しい集約関数を作成します。
CREATE FUNCTION udf_agch002002dynudt ( parameter_1 VARIANT_TYPE) RETURNS integer_udt CLASS AGGREGATE(4) LANGUAGE C NO SQL EXTERNAL NAME 'CS!udf_agch002002dynudt!udf_agch002002dynudt.c' PARAMETER STYLE SQL;
これで、次のようにNEW VARIANT_TYPEコンストラクタ式を指定したSELECTリクエストでudf_agch002002dynudtを使用できます。
SELECT udf_agch002002dynudt(NEW VARIANT_TYPE (tbl1.a AS a, (tbl1.b + tbl1.c) AS b)) FROM Tbl1;
このSELECTリクエストは、aとbという名前の2つの属性を持つ動的UDTを作成します。
VARIANT_TYPEを使用してUDFを記述することで、関数名のオーバーロードを処理するために複数のUDFを作成する手間をどれだけ削減(または排除)できるかについての説明は、Teradata Vantage™ - SQLデータ定義言語 - 詳細トピック、B035-1184のCREATE FUNCTION/REPLACE FUNCTIONを参照してください。
NEW VARIANT_TYPEコンストラクタ式については、<Teradata Vantage™ - SQL演算子およびユーザー定義関数、B035-1210>および<Teradata Vantage™ - SQLデータ操作言語、B035-1146>を参照してください。