Вызов хранимой процедуры с использованием Spring SimpleJdbcCall с обратным вызовом

1

У меня есть хранимая процедура Oracle, которая принимает вход CLOB и выход REFCURSOR. Я вызываю SP через Spring SimpleJdbcCall, проходящий в RowMapper для сопоставления результатов.

Однако, поскольку набор результатов является большим, мне нужно предоставить функцию обратного вызова клиенту. Я не могу понять, как добавить обратный вызов для вызова SP с помощью Spring - как с SimpleJdbcCall, так и без него.

Одна мысль, что у меня есть - передать RowCallbackHandler. Будет ли это работать или есть лучший способ решить эту проблему? Любая помощь здесь ценится.

    private Map<String, Object> arguments = ...;
    SimpleJdbcCall jdbcCall = new SimpleJdbcCall(this.jdbcTemplate)
            .withCatalogName(this.packageName)
            .withProcedureName(this.storedProcName)
            .withoutProcedureColumnMetaDataAccess()
            .declareParameters(this.outputParameters.toArray(new SqlOutParameter[]{}));

    if(!isEmpty(inputParameters)) {
        jdbcCall.declareParameters(inputParameters.toArray(new SqlParameter[]{}));
    }

    this.outputParameters.add(new SqlOutParameter(outputParamName, VARCHAR, rowMapper));

    jdbcCall.execute(arguments);
Теги:
stored-procedures
callback
spring
spring-jdbc

1 ответ

2
Лучший ответ

На самом деле RowCallbackHandler является хорошим решением для вашего дела:

 this.outputParameters.add(new SqlOutParameter(outputParamName, VARCHAR, new RowCallbackHandler() {
  public void processRow(ResultSet rs) throws SQLException { 
      // Build model object from ROW and invoke client service from here
  }
}));

 jdbcCall.execute(arguments);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню