Symfoware Server アプリケーション開発ガイド(JDBCドライバ編) - FUJITSU -
目次 索引 前ページ次ページ

第4章 ルーチンを利用するアプリケーションの作成> 4.1 プロシジャルーチンを利用する場合

4.1.5 プロシジャルーチンの処理結果

ここでは、プロシジャルーチン内での処理結果の確認方法と、プロシジャルーチンの呼出し元のアプリケーションでの処理結果の確認方法について説明します。

■プロシジャルーチン内での処理結果の確

プロシジャルーチン内の出力パラメタの情報を、CallableStatement.getXXXメソッドで取得できます。registerOutParameterメソッドでJDBCデータ型を指定し、getXXXメソッドでデータを取得してください。

プロシジャルーチン内のSQL手続き文の実行中に、例外コード40の例外(ロールバック例外)が発生した場合は、トランザクションをロールバックし、呼出し元のアプリケーションに無条件に復帰します。このときの例外事象は、呼出し元にエラーメッセージとSQLSTATEを通知します。

プロシジャルーチン内のSQL手続き文の実行中に、例外コード40以外の例外が発生した場合は、エラーメッセージとSQLSTATEを通知します。

■プロシジャルーチンの呼出し元での処理結果の確

例外によってプロシジャルーチンが実行されない、またはプロシジャルーチン内で例外が発生して処理が中断された場合は、その例外事象が呼出し元のSQLSTATEおよびSQLMSGに通知されます。プロシジャルーチンが実行されない場合とは、アクセス規則違反や、プロシジャルーチンのパラメタ間の代入エラーが発生した場合などがあります。

以下に、具体例を示します。

[図:プロシジャルーチンの呼出し元での処理結果の確認]

CallableStatement cstmt = con.prepareCall(
                          "{CALL GENERAL.PROC01[?,?,?]}");

cstmt.setInt(1,7);
cstmt.setString(2,"bird");

cstmt.registerOutParameter(2,java.sql.Types.CHAR);          (1)
cstmt.registerOutParameter(3,java.sql.Types.INTEGER);       (1)

cstmt.executeUpdate();
int iID = 0;
String sName = null;

sName = cstmt.getString(2);                                 (2)
iID = cstmt.getInt(3);                                      (2)
System.out.println("ID = " + iID);                          (2)
System.out.println("NAME = " + sName);                      (2)

cstmt.close();                                              (3)

(1)JDBCデータ型の設定

(2)出力パラメタからのデータ取得

(3)オブジェクトのクローズ


目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 2007