谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

ストアドの呼び出し方の希望。

今のS2JDBCのやり方の通り、ストアドプロシージャ/ストアドファンクションごとに
Entity(Parameter)クラスを作るというスタイルで構わないと思います。

public class FunctionParam
{
	public String result_OUT;

	public String arg1_IN;

	public String arg2_IN_OUT;

	public String arg3_OUT;
}

ただ、こんな変な命名規則だけでなく、アノテーションで書けると、ちょっと嬉しい。

public class FuncParam
{
	@Out
	public String result;

	@In
	public String arg1;

	@InOut
	public String arg2;

	@Out
	public String arg3;
}

こういう感じね。


まぁ、命名規則だろうがアノテーションだろうが構いませんが、
肝心のストアドの呼び出し方は、

jdbcManager.callFunction("hogeFunc", param);
jdbcManager.callProcedure("hogeProc", param);

みたいに書ければ良いと思います。


ストアドファンクション (callFunction) の場合だったら、
一番最初のパラメータを、必ず戻り値だとみなせばOKだし、
ストアドプロシージャ (callProcedure) の場合は、
全てを引数扱いにすればOK。


それだとちょっと間違いそう、、、と言うなら

public class FunctionParam
{
	public String result_RESULT;

	public String arg1_IN;

	public String arg2_IN_OUT;

	public String arg3_OUT;
}

こんな風に、RESULTパラメータとして
明確にすれば良いのではないでしょうか。


こうやって定義しておけば、
jdbcManager.callFunction()を呼び出した時点で、
引数のパラメータにRESULTがなければエラーとなります。


それで上手く行きそうなのですが、どうでしょうか。