1

Spring+MSSQL Server 2008アプリケーションを実装しています。API を使用SimpleJDBCCallしてストアド プロシージャを実行し、結果を取得します。

単一テーブルの結果を持つストアド プロシージャの場合は問題なく動作しますが、複数のテーブルの結果を持つプロシージャに使用する方法がわかりません。

プロシージャ本体の例:

マルチテーブルの結果

    SELECT * FROM TABLE1
    SELECT * FROM TABLE2
4

1 に答える 1

0

私はほとんど無知でした、それは実際に機能します! それぞれ独自のマッパーを使用して、両方の結果セットを指定できます。コードでは次のようになります。

SimpleJdbcCall call = new SimpleJdbcCall(this.jdbc)
           .withProcedureName("get_users3")
           .returningResultSet("rs1", new ParameterizedRowMapper<Object[]>()
           {
              @Override
              public Object[] mapRow(ResultSet rs, int rowNum) throws SQLException
              {
                 return new Object[] { rowNum, rs.getInt(1), rs.getString(2) };
              }
           })
           .returningResultSet("rs2", new ParameterizedRowMapper<Object[]>()
           {
              @Override
              public Object[] mapRow(ResultSet rs, int rowNum) throws SQLException
              {
                 return new Object[] { rowNum, rs.getInt(1), rs.getString(2) };
              }
           });

  Map<String, Object> res = call.execute();
  assertNotNull(res.get("rs1"));
  assertNotNull(res.get("rs2"));
  List<Object[]> l1 = (List<Object[]>)res.get("rs1");
  List<Object[]> l2 = (List<Object[]>)res.get("rs2");
于 2013-03-14T07:43:44.873 に答える