17.00 - 17.05 - 戻り値型のデフォルト マッピング ルール - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)

Teradata Databaseでは、戻り値型に対してもパラメータ型と同じマッピング ルールを使用しています。

スカラーまたは集約関数のUDFを実装するJavaメソッドの場合は、戻り値に使用するデータ型は、CREATE FUNCTIONまたはREPLACE FUNCTION文のRETURNS句のSQLデータ型にマッピングされます。(UDFテーブルには戻り値はありません。UDFテーブルにより生成された結果行の列は、出力パラメータとして戻されます)。

スカラーUDFに対してCREATE FUNCTION文を使った次の例を見てください。

CREATE FUNCTION factorial
  (x INTEGER)
RETURNS INTEGER
LANGUAGE JAVA
NO SQL
PARAMETER STYLE JAVA
RETURNS NULL ON NULL INPUT
EXTERNAL NAME 'JarUDF:UDFExample.fact';

このRETURNS句では、戻り値のSQLデータ型はINTEGERと指定されています。UDFを実装するファクトメソッドのシグネチャは次のようになります。

public static int fact( int x ) { ... }

デフォルトのマッピング規則は単純なマッピングで、SQLデータ型がJavaプリミティブにマッピングされます。SQLデータ型に適切にマッピングできるJavaプリミティブが無い場合は、デフォルトのマッピング規則はオブジェクト マッピングになり、SQLデータ型がJavaクラスにマッピングされます。

DECIMAL値を戻すfactorial指定のUDFを紹介します。

CREATE FUNCTION factorial
  (x INTEGER)
RETURNS DECIMAL(8,2)
LANGUAGE JAVA
NO SQL
PARAMETER STYLE JAVA
RETURNS NULL ON NULL INPUT
EXTERNAL NAME 'JarUDF:UDFExample.fact';

DECIMAL型は的確にJavaプリミティブにマッピングできないため、DECIMAL型はjava.math.BigDecimalにマッピングされます。UDFを実装するファクトメソッドのシグネチャは次のようになります。

public static BigDecimal fact( int x ) { ... }

SQLデータ型がJavaデータ型にマッピングされる仕組みについては、SQLデータ型のマッピングを参照してください。