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

Posted 你安静了夏天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 指定的设置时在执行或运行时候生效,分析时候不生效。

以上是关于hibernate 使用sql server的存储过程时没有返回值的主要内容,如果未能解决你的问题,请参考以下文章

使用 Hibernate 连接到 SQL Server 2008 命名实例时出现问题

让 Hibernate 和 SQL Server 与 VARCHAR 和 NVARCHAR 配合使用

Microsoft SQL Server 2014 的 Hibernate 方言是啥?

Hibernate + JPA + jTDS + SQL Server = Unicode 问题

Spring Hibernate无法使用名称中的连字符连接到SQL Server

从 MySQL 到 SQL Server 的 Hibernate + Spring 迁移