例: UDF定義のVARIANT_TYPE入力パラメータUDTデータ型の作成および使用 - Teradata Database - Teradata Vantage NewSQL Engine - 例: UDF定義のVARIANT_TYPE入力パラメータUDTデータ型の作成および使用、CREATE FUNCTION (外部形式)およびREPLACE FUNCTION (外部形式)構文の文。

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

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/wkf1512081455740.ditamap
dita:ditavalPath
ja-JP/wkf1512081455740.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>を参照してください。