问题描述:
开发时调用一存储过程的方法,方法的出参为XML
// 执行存储过程 SP_SST_THIRD_INTERFACE
String callString="{call SP_SST_THIRD_INTERFACE(?,?,?)}";
String outXml = this.getJdbcTemplate().execute(callString, new CallableStatementCallback<String>() {
@Override
public String doInCallableStatement(CallableStatement cs)
throws SQLException, DataAccessException {
cs.setString(1, "query_settled_list");
cs.setString(2, inXml);
cs.registerOutParameter(3, Types.VARCHAR);
cs.execute();
String reString = cs.getString(3);
return reString;
}
});
该存储过程绑定的出参为 Types.VARCHAR ,可能会导致返回的XML过大时不完整的问题,建议改为 Types.CLOB :
// 执行存储过程 SP_SST_THIRD_INTERFACE
String callString="{call SP_SST_THIRD_INTERFACE(?,?,?)}";
String outXml = this.getJdbcTemplate().execute(callString, new CallableStatementCallback<String>() {
@Override
public String doInCallableStatement(CallableStatement cs)
throws SQLException, DataAccessException {
cs.setString(1, "query_settled_list");
cs.setString(2, inXml);
cs.registerOutParameter(3, Types.CLOB);
cs.execute();
String reString = cs.getString(3);
return reString;
}
});