一、问题
- 首先排除存储过程返回结果集为空
- 排除java端结果集接收错误问题
- sql server:set nocount on
二、set nocount on
官方文档
当 SET NOCOUNT 为 ON 时,不返回计数。 当 SET NOCOUNT 为 OFF 时,返回计数。
即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。
当 SET NOCOUNT 为 ON 时,将不向客户端发送存储过程中每个语句的 DONE_IN_PROC 消息。 如果存储过程中包含一些并不返回许多实际数据的语句,或者如果过程包含 Transact-SQL 循环,网络通信流量便会大量减少,因此,将 SET NOCOUNT 设置为 ON 可显著提高性能。
SET NOCOUNT 指定的设置是在执行或运行时生效,而不是在分析时生效。
原因 :java端显示直接接受到了计数的信息,而不是接受到存储过程返回的结果集,所以导致接收的结果集为空,在存储过程的最上方添加set nocount on 即可。
create procedure on
as
begin
set nocount on;
...
end