一、问题详细描述:
数据库是SQL server。今天在用java的JDBC调用存储过程的时候出了一个异常:
com.microsoft.sqlserver.jdbc.SQLServerException: 该语句没有返回结果集
但矛盾的是用数据库执行存储过程的时候明明是有返回查询结果的。
二、解决办法
在sql语句前面加上 SET NOCOUNT ON
比如我的sql语句原来是exec C_GetSysAlarm ?
现在要改成SET NOCOUNT ON exec C_GetSysAlarm ?
网上的解释是SQL server的新版的驱动包会关注到存储过程执行过程中返回的“影响多少行”这些信息,有这些信息存在,就会抛出空结果集异常;
在sql语句前加“SET NOCOUNT ON ”,表示不返回计数(表示受 Transact-SQL 语句影响的行数)