Javaからストアドプロシージャを呼び出しています。ここで、ストアドプロシージャのパラメータを、その位置のイニデックスではなく名前で設定する必要がありますが、実行可能ですか?
ただし、文字列の連結は使用したくありません。安全で醜い処理ではありません。
注意:OUT/INOUTパラメーターも操作する必要があります。
Javaからストアドプロシージャを呼び出しています。ここで、ストアドプロシージャのパラメータを、その位置のイニデックスではなく名前で設定する必要がありますが、実行可能ですか?
ただし、文字列の連結は使用したくありません。安全で醜い処理ではありません。
注意:OUT/INOUTパラメーターも操作する必要があります。
次の形式を使用してパラメータに名前を付けることができます
cstmt.setString("arg", name);
ここで、cstmtはCallableStatement
ここで、argは、対応するストアドプロシージャの引数の名前です。
この場合はparamnameを使用するため、ストアドプロシージャの引数と同じ順序でパラメータに名前を付ける必要はありません。
また、以下のリンクでCallableStatementに関するチュートリアルを実行できます-
http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.jdbc_pg.doc/jdbc89.htm
リンクを読むことができます-registerOutParameterステートメントはリンクにあります-
// Register out parameter which should return the product is created.
cstmt.registerOutParameter("prod_id", Types.FLOAT);
それは実行可能ですが、言語内でネイティブではありません。この機能を提供するために独自のコードを作成するか、サードパーティのコードに依存する必要があります(推奨されるアプローチ)。私は過去にこの記事の簡単なコードを使用して成功しました。すべてのケースを処理できるわけではありませんが、簡単に拡張できます。SpringFrameworkには、より堅牢なソリューションを探している場合にこの機能を提供するためのライブラリもいくつか用意されています。