1

我有一个子报表,它调用一个sybase stored procedure.子报表在 ireport 和 jasper 上单独运行良好。当我在主报表中使用子报表并在iReport上运行它时,它运行良好。当我在JasperReports上运行相同的报告时,问题就出现了。我收到以下错误:

Error Message com.sybase.jdbc3.jdbc.SybSQLException: SET CHAINED command not allowed within multi-statement transaction. .

我用谷歌搜索并没有找到解决我问题的任何地方。我的子报告在摘要带中。我正在使用JasperReports 服务器 4

下面是完整的错误跟踪。

java:901) 在 net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:609) 在 net.sf 的 net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845) .jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59) at net.sf.jasperreports.engine.fill.JRThreadSubreportRunner.run(JRThreadSubreportRunner.java:205) ... 1 更多原因:com.sybase。 jdbc3.jdbc.SybSQLException:在多语句事务中不允许使用 SET CHAINED 命令。在 com.sybase.jdbc3.tds.Tds.a(未知来源) 在 com.sybase.jdbc3.tds.Tds.nextResult(未知来源) 在 com.sybase.jdbc3.jdbc.ResultGetter.nextResult(未知来源) 在 com .sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source) at com.sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source) at com.sybase.jdbc3.jdbc。jdbc3.jdbc.SybSQLException:在多语句事务中不允许使用 SET CHAINED 命令。在 com.sybase.jdbc3.tds.Tds.a(未知来源) 在 com.sybase.jdbc3.tds.Tds.nextResult(未知来源) 在 com.sybase.jdbc3.jdbc.ResultGetter.nextResult(未知来源) 在 com .sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source) at com.sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source) at com.sybase.jdbc3.jdbc.SybStatement.queryLoop(Unknown Source) at com.sybase .jdbc3.jdbc.SybStatement.executeQuery(Unknown Source) at com.sybase.jdbc3.jdbc.SybPreparedStatement.executeQuery(Unknown Source) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92) at net。 sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:137) ... 还有 10 条错误消息 com.sybase.jdbc3.jdbc.SybSQLException: SET CHAINED command not allowed within multi-statement transaction。错误跟踪 com.sybase.jdbc3.jdbc.SybSQLException:在多语句事务中不允许 SET CHAINED 命令。在 com.sybase.jdbc3.tds.Tds.a(未知来源) 在 com.sybase.jdbc3.tds.Tds.nextResult(未知来源) 在 com.sybase.jdbc3.jdbc.ResultGetter.nextResult(未知来源) 在 com .sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source) at com.sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source) at com.sybase.jdbc3.jdbc.SybStatement.queryLoop(Unknown Source) at com.sybase .jdbc3.jdbc.SybStatement.executeQuery(Unknown Source) at com.sybase.jdbc3.jdbc.SybPreparedStatement.executeQuery(Unknown Source) at org.apache.commons.dbcp.DelegatingPreparedStatement。

任何帮助,将不胜感激。

4

2 回答 2

0

我将数据源更改为 JNDI,它运行良好。

于 2013-10-22T10:33:27.093 回答
0

错误“多语句事务中不允许使用 SET CHAINED 命令”显示在设置链接选项时打开了 sybase 事务。因此,请确保在使用这些设置链式模式命令时没有打开任何事务。

要检查 tranasaction 使用 @@trancount - 如果它大于 0 则回滚或提交事务然后只使用 set 命令

于 2013-10-23T11:25:27.707 回答