java - 带有 JDBC 临时表的存储过程没有结果集

标签 java mysql sql sql-server jdbc

我有一个存储过程,它创建临时表并填充临时表。填充后,它使用 (SELECT) 返回表内的行。

当从 MySQL 工作台运行它时,效果非常好,但在带有 JDBC 的 JAVA 中,结果集是空的。我浏览过一些帖子,其中说我们不应该使用 PreparedStatment,但即使 Statement 也不起作用。

为了测试,我将作业划分为存储过程。现在我打电话:

CallableStatement ps = connection.prepareCall("{CALL myProcedure(?)}");
ps.setString(1, "value");
ps.execute();

它创建临时表并填充它。此后,我尝试使用相同的连接进行

Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM tmp_table");

结果集仍然是空的。我能做些什么?如有任何帮助,我们将不胜感激。

最佳答案

谢谢各位的帮助! 我发现了错误。错误出现在代码中。

我在调用过程时发送一个参数。出于测试目的,我这样做了

SET @param = "value";

后来,我删除了它,但在将数据插入使用该 @param 的临时表时忘记删除它。 MySQL 不知何故可以看到 @paramIN param 由于名称而相同,但 JDBC 无法看到这一点,因此,它没有返回任何数据。

关于java - 带有 JDBC 临时表的存储过程没有结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21384113/

相关文章:

java - 删除执行多个验证的代码片段中的重复项

java - Powermock 私有(private) stub 错误

c++ - 如何使用 C++ (ubuntu) 连接到 MySQL 数据库

bash - MySQL根据给定参数显示最早的重复项

java - 如何查看JNI本地引用表?

java - java中的iText ListItem和List类

python - flask -SQLAlchemy -"MySQL Connection not available."

php - 在“附近触发Mysql错误

MYSQL 计数 - 如果为空则返回 0

sql - 子 CTE 或嵌套模型