Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー プログラミング » データベースにおける Java » データベース内の Java クラスの特殊な機能

 

Java からストアドプロシージャーを経由して返される値

EXTERNAL NAME LANGUAGE JAVA を使用して作成したストアドプロシージャーは、Java メソッドのラッパーとして使用できます。この項では、ストアドプロシージャー内で OUT または INOUT パラメーターを利用する Java メソッドの記述方法について説明します。

Java は、INOUT または OUT パラメーターの明示的なサポートはしていません。ただし、パラメーターの配列は使用できます。たとえば、整数の OUT パラメーターを使用するには、1 つの整数だけの配列を作成します。

public class Invoice 
{
  public static boolean testOut( int[] param )
  {
    param[0] = 123;
    return true;
  }
}

次のプロシージャーでは、testOut メソッドを使用します。

CREATE PROCEDURE testOut( OUT p INTEGER )
EXTERNAL NAME 'Invoice.testOut([I)Z'
LANGUAGE JAVA;

文字列 ([I)Z は Java メソッドのシグネチャーで、メソッドが単一のパラメーターを持ち、このパラメーターが整数の配列であり、ブール値を返すことを示しています。OUT または INOUT パラメーターとして使用するメソッドパラメーターが、OUT または INOUT パラメーターの SQL データ型に対応する Java データ型の配列になるように、メソッドを定義します。

これをテストするには、初期化されていない変数を使用してストアドプロシージャーを呼び出します。

CREATE VARIABLE zap INTEGER;
CALL testOut( zap );
SELECT zap;

結果セットは 123 です。

メソッドのシグネチャーを含む構文の詳細については、CREATE PROCEDURE 文 [外部呼び出し]を参照してください。