サポート > Wagby Developer Network > カスタマイズ事例 > データベースのストアド・プロシージャを呼び出す

コード例

Wagby のアクションまたはプロセスビーンから、データベースのストアド・プロシージャを呼び出すことができます。

例として、利用しているデータベース上にストアド・プロシージャ「PROC」が用意されているものとします。 また、引数 args1 はすでに適切な値が設定されているものとします。 この場合、次のようなコードとなります。

...
(中略)
...

  java.sql.CallableStatement cstmt = null;
  java.sql.ResultSet rset = null;

  try {
    // ストアド・プロシージャ PROC を呼び出します。
    String proc = "PROC('" + args1 + "')";
    String call = "{call " + proc + "}";
    cstmt = p.con.prepareCall(call);
    rset = cstmt.executeQuery();
    p.con.commit();
  } catch(Exception e) {
    // エラー処理を記述してください。
  }

...

このソースコードのポイントは次のとおりです。

  • DbActionParameter クラスのインスタンスである p に含まれる con オブジェクトを使って、データベースコネクションを利用しています。
  • java.sql.CallableStatement クラスを使うことで、ストアド・プロシージャを呼び出します。

注意事項

Wagby が提供する更新系の処理(プロセスビーン)のデータベースコネクションは p.con ではなく、Hibernate 管理下にあるコネクションを使用しています。プロセスビーンの更新処理と、ストアド・プロシージャの両方を同時に実行することはできますが、コミットはそれぞれ行なう必要があります。

更新対象のモデルが、Web フォーム上からも更新されている可能性があるような運用形態の場合、対象モデルについて Wagby レベルのロックを適用する必要があります。また、キャッシュクリア処理も必要です。具体的なコードの詳細については、ここでは割愛します。

このページ

カスタマイズ事例