例: UDF定義のVARIANT_TYPE入力パラメータUDTデータ型の作成および使用 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 構文規則および例

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/spp1591731285373.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

この例では、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リクエストは、abという名前の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>を参照してください。