我正在调用一个存储过程,它返回大约20个字段。其中一个是clob。
我使用的是springjdbc,无法处理clob值。clob上的任何操作都会引发关闭连接错误。clob包含大量xml数据。我什么都试过了,从使用getcharacterstream、readers到bytearray,都没有运气。即使检查clob的长度也会引发闭合连接错误。
样本代码
SqlParameterSource params = new MapSqlParameterSource()
.addValue("obj_key", objkey)
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(provide())
.withSchemaName("aa")
.withCatalogName("bbb")
.withProcedureName("cccccc")
.declareParameters(
new SqlParameter("obj_key", Types.NUMERIC),
new SqlOutParameter("tv_flag", Types.NUMERIC),
new SqlOutParameter("dtv_flag", Types.NUMERIC),
new SqlOutParameter("dig_flag", Types.NUMERIC),
new SqlOutParameter("in_flag", Types.NUMERIC),
new SqlOutParameter("rfs_status", Types.VARCHAR),
new SqlOutParameter("phone_flag", Types.NUMERIC),
new SqlOutParameter("chan", Types.VARCHAR),
new SqlOutParameter("prods", Types.VARCHAR),
new SqlOutParameter("prods_clob", Types.CLOB), ************this field
new SqlOutParameter("prod_all", Types.NUMERIC),
new SqlOutParameter("remainder", Types.NUMERIC),
new SqlOutParameter("extrainfo", Types.VARCHAR),
new SqlOutParameter("provider", Types.VARCHAR),
new SqlOutParameter("areacode", Types.NUMERIC),
new SqlOutParameter("moduldata", Types.VARCHAR));
Map<String, Object> results = jdbcCall.execute(params);
Clob clobProdPaks = (Clob) results.get("prods_clob");
clobProdPaks.length() >>>>>connection closed
clobProdPaks.getCharacterStream() >>>>>connection closed
有人能就如何处理这个clob字段提出建议吗?我不想在callablestatement中使用大量的?????????。我删掉了上面的参数,还有很多。
提前谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!