[Seasar-user:9096] Re: [S2DAO]MySQLのストアドプロシジャ

kubo [E-MAIL ADDRESS DELETED]
2007年 7月 11日 (水) 14:09:19 JST


久保です。

> > 大変申し訳ありませんがどこに問題があるのか
> > 分かりません。
> > MySQL5.0.41ではストアドファンクションが使えるので
> > ファンクションにしていますがストアドプロシジャでないと
> > 駄目ですか?
> 
> S2DaoとMySQLのストアドプロシジャ/ファンクションの
> 組み合わせにあまり実績がないので実装を調査する必要
> がありそうです。

自分、以前実開発にて S2Dao + MySQL でストアドプロシージャを
呼び出してました。(但し、ストアドのテストをJUnit上でするためにです)
参考になるかどうかわかりませんが、その時の状況をここで提供しておきます。

[その時のVersion]
MySQL   5.0.22
S2Dao   1.0.40
DBFlute 0.4.6

その時は以下のような手段で呼び出していました。

「SQLアノテーション or SQLファイルにストアド呼び出し文を記述」
// 検索
call sp_selectListXxx( /*pmb.fromDate*/'2006-11-01' ,/*pmb.toDate*/'2007-03-20' )
// 更新
call sp_updateXxxStatus( /*pmb.fromDate*/'2006-11-01' ,/*pmb.toDate*/'2007-03-20' )

S2DaoのBind変数コメントをそのまま使って引数を渡してました。
ストアドの引数の指定は全て「IN」でした。
検索のストアドはMySQLの「結果セットを返すストアド」を利用しています。


ちなみに戻り値のEntityは、DBFluteのSql2Entityを使って生成できました。
(ストアド実行のResultSetからMetaDataが取得できたのでEntityの作成が可能)

/* * * * * * * * * * * * * * * * * * * * * * * * 【SQLファイル】
-- #XxxOriginalEntity#
-- !XxxPmb!
-- !!java.sql.Timestamp fromDate!!
-- !!java.sql.Timestamp toDate!!
call sp_selectListXxx( /*pmb.fromDate*/'2006-11-01' ,/*pmb.toDate*/'2007-03-20' )
* * * * * * * * * * */

/* * * * * * * * * * * * * * * * * * * * * * * * 【DAO】
public java.util.List<XxxOriginalEntity> selectListXxx(XxxPmb pmb);
* * * * * * * * * * */


ストアドのテストをしたいがためにJUnitで呼び出しているだけなので、
メインプログラム上で動かしたわけではないですが、
特にプロシージャアノテーションとかを利用せずに呼び出して結果を
受け取ることはできました。
(但しストアドファンクションに関しては試してないです)


以上、単なる参考情報ということで




Seasar-user メーリングリストの案内