MYSQL存储过程不返回java中的结果集
我有一个mysql存储过程(SP),它对一个表进行选择,然后使用连接字符串(html代码)包装结果。当通过workbench运行时,我得到了数据,但java结果集似乎是空的。它返回一大行连接的字符串数据(超过1000行,用它创建html表) 但不太确定java是否接受大字符串数据作为结果集。有什么建议吗? 我的java调用:MYSQL存储过程不返回java中的结果集,java,mysql,stored-procedures,mariadb,Java,Mysql,Stored Procedures,Mariadb,我有一个mysql存储过程(SP),它对一个表进行选择,然后使用连接字符串(html代码)包装结果。当通过workbench运行时,我得到了数据,但java结果集似乎是空的。它返回一大行连接的字符串数据(超过1000行,用它创建html表) 但不太确定java是否接受大字符串数据作为结果集。有什么建议吗? 我的java调用: StringBuilder out = new StringBuilder(""); CallableStatement cs = conn.prep
StringBuilder out = new StringBuilder("");
CallableStatement cs = conn.prepareCall("{ CALL get_html(?)}");
cs.registerOutParameter(1, Types.LONGVARBINARY);
cs.setString(1, out.toString());
ResultSet rs = cs.executeQuery();
while (rs.next()) {
System.out.println(String.format("%s - %s", rs.getString("out")));
}
rs似乎是空的。您的存储过程不应该返回结果集,因为您不是在生成结果集,而是在INOUT变量中返回结果 你应该做下面这样的事情
cs.registerOutParameter(1,Types.LONGVARBINARY);
..
cs.executeUpdate();
System.out.println(cs.getString(1));
不要弄乱输出参数可能更容易,只需在SP末尾选择BugList,并有一个返回字符串作为结果集的过程,正如Akina在评论中提到的那样。替换您的最终
set BugList=Replace(BugList,'\n','
)代码>使用简单的选择替换(错误列表'\n','
')代码>。然后像普通的SELECT查询一样获取SP的输出。@Akina-这很有效,谢谢。如果你把它作为答案贴出来,我可以接受。
set @list="";
call get_fixed_web_bugs_html(@list);
select @list
StringBuilder out = new StringBuilder("");
CallableStatement cs = conn.prepareCall("{ CALL get_html(?)}");
cs.registerOutParameter(1, Types.LONGVARBINARY);
cs.setString(1, out.toString());
ResultSet rs = cs.executeQuery();
while (rs.next()) {
System.out.println(String.format("%s - %s", rs.getString("out")));
}