我有一个存储过程,它创建临时表并填充临时表。填充后,它会返回表格内的行(SELECT
)。
从MySQL工作台运行它时工作量非常大,但在使用JDBC的JAVA中,ResultSet为空。我已经阅读了一些帖子,说明我们不应该使用PreparedStatment
,但即使Statement
也无效。
为了测试,我将工作划分为Stored prodecure。现在我打电话给
CallableStatement ps = connection.prepareCall("{CALL myProcedure(?)}");
ps.setString(1, "value");
ps.execute();
创建临时表并填充它。此后我尝试做同样的连接
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM tmp_table");
仍然是ResultSet为空。我能做什么?任何帮助表示赞赏。
答案 0 :(得分:1)
谢谢大家的帮助! 我发现了错误。错误发生在代码中。
我在调用程序时发送一个参数。出于测试目的,我做了
SET @param = "value";
后来,我删除了它但是在将数据插入使用@param
的临时表时忘记删除它。 MySQL以某种方式可以看到@param
和IN param
是相同的,因为名称,但JDBC无法看到,因此,它没有返回任何数据。