Derby データベースの Create Function コマンドの使用に問題があります。
まず、試してみました
CREATE FUNCTION TO_DEGREES(RADIANS DOUBLE) RETURNS DOUBLE
PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA
EXTERNAL NAME 'java.lang.Math.toDegrees'
その後
SELECT TO_DEGREES(3.142), BILLNO FROM SALEBILL
これは絶対にうまくいきます。
今、私はこのような自分の関数を作ってみました:
package SQLUtils;
public final class TestClass
{
public TestClass()
{
}
public static int addNos(int val1, int val2)
{
return(val1+val2);
}
}
に続く
CREATE FUNCTION addno(no1 int, no2 int) RETURNS int
PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA
EXTERNAL NAME 'SQLUtils.TestClass.addNos'
その後
SELECT addno(3,4), BILLNO FROM SALEBILL
これにより例外が発生します
Error code -1, SQL state 42X51: The class 'SQLUtils.TestClass' does not exist or is inaccessible. This can happen if the class is not public.
エラー コード 99999、SQL 状態 XJ001: Java 例外: 'SQLUtils.TestClass: java.lang.ClassNotFoundException'。
6 行目、1 列目
上記のクラスを含むプロジェクトのjarファイルを作成しました。私は間違っているかもしれませんが、これから導き出せる結論は、この jar ファイルは何らかのクラスパスにある必要があるということです。しかし、どのクラスパスで、それをクラスパスに追加する方法がわかりません。
jarファイルをjdk\libフォルダー、jre\libフォルダー、jdk\jre\libフォルダーにコピーしようとしましたが、役に立ちませんでした。
誰かが私を正しい方向に向けることができますか?
NetBeans IDE 7.1.2、jdk 1.7.0_09、Derby バージョン 10.8.1.2 をネットワーク モードで使用しています。アプリケーションとデータはサーバー上にあります。クライアントコンピューターにインストールされた Netbeans からそれらにアクセスします。