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

SAP Sybase SQL Anywhere 16.0 » 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 文 [外部呼び出し]を参照してください。