パラメータ型のデフォルト マッピング規則 - Teradata Database - Teradata Vantage NewSQL Engine

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/uhh1512082756414.ditamap
dita:ditavalPath
ja-JP/uhh1512082756414.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage

Javaメソッドのパラメータ リストで使用されるデータ型は、CREATE FUNCTIONまたはREPLACE FUNCTION文のパラメータ リストではSQLデータ型にマッピングされます。

スカラー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';

このパラメータ リストでは、xのSQLデータ型はINTEGERと指定されています。UDFを実装するfactメソッドのシグネチャは次のようになります。

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

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

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

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

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

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

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