Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL存储过程不返回java中的结果集_Java_Mysql_Stored Procedures_Mariadb - Fatal编程技术网

MYSQL存储过程不返回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

我有一个mysql存储过程(SP),它对一个表进行选择,然后使用连接字符串(html代码)包装结果。当通过workbench运行时,我得到了数据,但java结果集似乎是空的。它返回一大行连接的字符串数据(超过1000行,用它创建html表)

但不太确定java是否接受大字符串数据作为结果集。有什么建议吗? 我的java调用:

 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")));
}