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データ型のマッピングを参照してください。