Java Callablestatement 不会等到 .execute() 结束

Posted

技术标签:

【中文标题】Java Callablestatement 不会等到 .execute() 结束【英文标题】:Java Callablestatement doesn't wait until .execute() ends 【发布时间】:2014-10-20 07:09:21 【问题描述】:

我正在尝试从 Table_X 中获取价值。但是那些由程序插入的表值。我正在调用像 ps.execute() 这样的过程,我想等到它结束并从 Table_X 获得所有结果,一切看起来都正常。但它只返回 Table_X 的一些结果,而不是全部。所以我认为它不会等到程序结束。所以它只返回一些插入的值。

我该如何解决?

编辑:代码;

 CallableStatement pstmt = con.prepareCall(" ? = call  "+job.getSP()+" ");
 pstmt.registerOutParameter(1, Types.INTEGER);
 pstmt.execute();

那我在调用一个方法

  Map<String,String> errors = MTRCMtdJob.GetDataControlErrors();

这些方法从 Table_X 中获取值

【问题讨论】:

一旦你的插入过程完成,然后调用下一个过程来获取值。它可能在所有数据的不完整插入之前工作 【参考方案1】:

我认为只有一个问题,事务隔离级别甚至在提交过程事务之前就允许脏读。我建议您在过程事务之后使用 commit 将读取表格部分放在一个新的事务块中。并且请检查事务隔离级别。

【讨论】:

以上是关于Java Callablestatement 不会等到 .execute() 结束的主要内容,如果未能解决你的问题,请参考以下文章

jdbc java数据库连接 5)CallableStatement 接口

如何从 Java JDBC 中的 callableStatement 获取滚动不敏感的结果集?

CallableStatement 的性能下降

java调用存储过程和函数

PreparedStatement 、 CallableStatement 和性能注意事项

在存储过程调用期间使用 CallableStatement 的 SQL 语句无效