2011-09-02 13 views
2

私は何を試しても、単一の整数出力パラメータと5つのvarchar入力パラメータを持つストアドプロシージャを持っています。出力パラメータを取得できないようです。私はdbでsprocを実行しました。データが返ってくるので、間違っていることはわかりません。simplejdbccallの出力パラメータ

誰かがsimplejdbccallから出力paramを取得する方法を知っていますか?

私はこのような何かを持っている:

SimpleJdbcCall simpleJdbcCall = 
     new SimpleJdbcCall(getDatasourceForEnvironment()).withProcedureName("_Get_Id").declareParameters(
      new SqlParameter("MyID", Types.VARCHAR), new SqlParameter("MySourceID", Types.VARCHAR), 
      new SqlParameter("MyLocationID", Types.VARCHAR), new SqlParameter("MyVisitID", Types.VARCHAR), 
      new SqlParameter("MyVisitDate", Types.VARCHAR)); 

    HashMap< String, String > input = new HashMap< String, String >(); 
    input.put("MyID", myObj.getMyID()); 
    input.put("MySourceID", myObj.getMySourceID()); 
    input.put("MyLocationID", myObj.getMyLocationID()); 
    input.put("MyVisitID", myObj.getMyVisitID()); 
    input.put("MyVisitDate", myObj.getMyVisitDate()); 

    System.out.println(simpleJdbcCall.execute(input)); 

答えて

2

私が間違っていた2つのことがありました:私は間違ったデータベースに接続されていた

  1. が。より細かい単位を書くと テストで私のエラーが明らかになりました。

  2. 「実行」からの戻り値はマップなので、出力パラメータは大文字小文字の です。

短いストーリーで、特別なことは何もありません。デフォルトでは、出力パラメータが含まれています。さらに、MapSqlParameterSourceは、これらの種類のメソッドを使用する方がはるかにクリーンな方法です。

+0

関数(プロシージャではない)を呼び出し、OUTパラメータと同様に戻り値が必要な場合、SpringはデフォルトでOUTパラメータを返しません。最良の方法は、 'new SqlParameter()'を 'new SqlInOutParameter()'として常に定義することです。そうすれば、springはマップのoutパラメータを戻り値で更新します。どんなパフォーマンスへの影響についてもわからない – SashikaXP