CREATE FUNCTION文により、式で利用できるJava関数を作成できます。
関数の所有者および、データベースの所有者は、自動的に関数へのEXECUTE権限を手に入れます。加えて、他のユーザへの権限付与の権限も手に入れます。関数とデータベースの所有者から、関数の実行権限を剥奪することはできません。
CREATE FUNCTION 関数名 ( [ 関数の引数 [, FunctionParameter] ] * ) RETURNS 返却データ型 [ 関数の要素 ] *
引数名は関数にて一意である必要があります。
データ型の構文は、データ型に書かれています。
データ型の構文はデータ型に記述されています。
表関数の返り値の型です。現在利用できるのはDerbyの表関数の形式のみです。 これらはJDBCのResultSetを返す関数です。 より詳細な情報は、Derby ディベロッパーズ ガイドに記述された「Derbyの表関数のプログラミング」を参照してください。
データ型の構文は、データ型に記述されています。
{ | LANGUAGE { JAVA } | EXTERNAL NAME 文字列 | PARAMETER STYLE パラメータの種類 | { NO SQL | CONTAINS SQL | READS SQL DATA } | { RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT } }
JAVA- 関数はJavaのクラスにあるpublic staticなメソッドとして呼ばれます。
クラス名.メソッド名これは空白を含んではなりません。
関数はJava言語およびSQLルーチンの仕様に沿って、引数を値渡しします。INOUTとOUTの引数は変更後の値を返せるように、要素がひとつの配列として渡されます。さらに結果セットはJavaのメソッドのパラメータを経て、配列に渡したjava.sql.ResultSet[]型の要素により返すことができます。
Derby は長い列の型(これは例えばLong VarcharやBLOB等のことです。)をサポートしません。 これらの長い列の型を使おうとすると、エラーが発生します。
Derbyの表関数の場合、PARAMETER STYLEは常にDERBY_JDBC_RESULT_SETで、これ以外の値とすることはできません。表関数とは表型を返す関数で、JDBCのResultSetを返すメソッドに対応します。 それ以外の場合は、PARAMETER STYLEは常にJAVAです。
により関数がSQLを発行するか否か。もしするならどのようなSQLを発行するかを記述します。
CREATE FUNCTION TO_DEGREES(RADIANS DOUBLE) RETURNS DOUBLE PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'java.lang.Math.toDegrees'