hibernate 使用sql server的存储过程时没有返回值

最近做项目时遇到这样一个问题:写了sql语句:执行sqlserver的存储过程的得到一个返回值,使用hibernate进行执行这个sql,结果没有报错,执行这个语句程序就中止了,随后我使用trycache去捕捉这个异常,得到的结果是:

 

 实际上是要给存储过程加上这一段话:


SET XACT_ABORT on;
SET NOCOUNT ON;
begin tran;

 

存储过程结尾插上这样一段话:

COMMIT TRAN
RETURN

ErrerHandle:
ROLLBACK TRAN
RETURN

这样就就就okkkkkkkk了,至于原理。。。。。,有兴趣的小伙伴知道了可以给我留言啊啊啊啊啊啊啊啊啊啊啊啊啊啊

-------------------------2020年9月3日19:30:16-------------------------------------------

在存储过程中,经常用到SET NOCOUNT ON;

作用:阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息。
当SET ONCOUNT ON时候,不返回计数,当SET NOCOUNT OFF时候,返回计数;

即使当SET NOCOUNT ON 时候,也更新@@RowCount;

当SET NOCOUNT on时候,将不向客户端发送存储过程每个语句的DONE_IN_proc消息,如果存储过程中包含一些并不返回实际数据的语句,网络通信流量便会大量减少,可以显著提高应用程序性能;

SET NOCOUNT 指定的设置时在执行或运行时候生效,分析时候不生效。

posted @ 2019-11-18 08:49  你安静了夏天  阅读(470)  评论(0编辑  收藏  举报