- - PR -
ストアドプロシージャのINパラメータの取得
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-08-17 17:54
お世話になります。
どなたかわかる方がいらっしゃいましたらご意見をお願いします。 下記のような方法でストアドプロシージャを実行しようとしていますが、 INパラメータにセットした値を再取得することは出来るでしょうか? ※ソースは大雑把ですが… ------------------------------------------------------------------- Connection con = DBUtil.getDBConnection(); CallableStatement stmt = con.prepareCall ("{call TEST_PRC(?,?,? ) }"); 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 stmt.setString(1, "ABC"); stmt.setString(2, "555"); stmt.registerOutParameter(3, Types.VARCHAR); stmt.execute(); System.out.println("IN1の確認:" + stmt.getString(1)); // ×エラーになる System.out.println("IN2の確認:" + stmt.getString(2)); // ×エラーになる System.out.println("OUTの確認:" + stmt.getString(3)); // ○値が取得出来る ------------------------------------------------------------------- ストアドプロシージャ自体は正しくCALL出来ているのですが、 INパラメータの再取得を行うとSQLException(列索引が無効です)が発生します。 他にも色々試したのですが、INパラメータを取得出来るようなメソッドが 見つかりませんでした。 上記のコードに変更を加えることは許されていないのですが、 その前提で、セット済みのINパラメータを再取得することは可能でしょうか? ご意見よろしくお願いいたします。 |
|
投稿日時: 2007-08-17 18:09
すみません書き忘れました!
環境ですが、 Javaのversion:1.4.2_13 DB:Oracle10g です。 |
|
投稿日時: 2007-08-17 18:28
InはInだけにOutできないはずですね。
Outでもない情報がDBから流れてくるのはそれはそれで気持ち悪い。 必要なら呼び出し元で覚えておくべきでは? |
|
投稿日時: 2007-08-17 19:17
>nagiseさん
返答ありがとうございます。 やっぱり出来ないのでしょうか!? ちなみに、主目的はデータの取得ではなく、単体テストでの確認なんです… 呼び出し先のプロシージャは別途単体テスト済みなので、 自分の持ち分としてパラメータを正しく渡していることを 確認出来ればそこまででOKということにしたのです。 (※プロシージャの処理内容が複雑で、OUTPUTからの判定が難しい為の逃げ措置ですが) セット前のパラメータを出力してみても、セットにミスがあったら テストの意味がないし、ダミープロシージャを作成して ダミーテーブルに引数を書き出す…とかやるとどんどん正確性が 危うくなるので、タイミングとしてはセット後のここだと思ったんです。 どうにかして取得出来ないでしょうか…。 SQLを編集して実行するときのように、実際に流れる内容を出せたりとかでも 十分なんですが… |
1