Java ルーチンと他のルーチンとの相違点

Java ルーチンは、他のプログラム言語で記述されたルーチンとは、いくつかの基本的な点で異なります。

Javaルーチンは、他の言語で書かれたストアドプロシージャとは以下の点で異なります
  • Javaルーチンは、PARAMETER STYLE JAVAで定義する必要があります。 JAVAのパラメータスタイルは、ルーチンがJava言語およびSQLJ仕様に準拠したパラメータ渡し規約を使用することを指定します。 DB2 は、INOUT および OUT パラメーターを単一記入項目配列として受け渡します。 つまり、Javaルーチンでは、OUTまたはINOUTパラメータを配列として宣言する必要があります。 例えば、ストアード・プロシージャー sp_one_out にタイプ int の出力パラメーターが 1 つある ものとします。 そのパラメーターの宣言は、次のようになります。
    public static void routine_one_out (int[] out_parm)
  • JavaのメインメソッドであるJavaルーチンには、以下の制限があります
    • このメソッドは、String[]のシグネチャを持つ必要があります。すべてのパラメータを、 java.lang.String 型のJava変数にマッピングできる必要があります。
    • ルーチンは IN パラメーターを 1 つだけ持つことができます。
  • Javaルーチンでは、計装施設インターフェース(IFI)コールを行うことはできません。
  • Javaルーチンに対して、SQLアクセスレベルをNO SQLに指定することはできません。
  • 他のJavaプログラムと同様に、Javaルーチンには以下のステートメントを含めることはできません
    • CONNECT
    • RELEASE
    • SET CONNECTION
  • ホスト言語データ・タイプへのルーチン・パラメーターのマッピングは、他の言語のホスト言語パラメーターへのルーチン・パラメーターのマッピングと異なります。
  • Javaストアドプロシージャから結果セットを返すためのテクニックは、他のストアドプロシージャから結果セットを返すためのテクニックとは異なります。
  • Javaルーチンが実行される際、実行中のクラスで新しいクラス参照が発生すると、Javaは動的にクラスをロードします。 クラスのロード処理時には、java.lang.ClassNotFoundException または java.lang.NoClassDefFoundError がスローされる場合があります。 これらのエラーは、Javaがインストール済みのJARファイルまたはCLASSPATHからクラスを検索する場合に発生します。 Javaルーチンがこれらのエラーや例外をキャッチできない場合、ルーチンは終了し、SQLエラー状態が報告されます。