我正在使用JPA 2.0和SQL Server 2008,并且确定使用表变量时JPA不喜欢我的存储过程。
例如,此存储过程有效:
declare @t table
(
id int identity
, test varchar(50)
)
select 'blah' as test -- I'm ignoring the table variable above
但是,当我尝试使用此代码将某些内容插入表变量
@t
时,它崩溃:declare @t table
(
id int identity
, test varchar(50)
)
insert into @t
select cast(getdate() as varchar(60))
select * from @t
我收到以下错误:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.2.v20100323-r6872): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: The statement did not return a result set.
Error Code: 0
如果可以的话,我讨厌不得不重写我的复杂存储过程以不使用表变量。
感谢您的任何建议。
最佳答案
随意考虑:尝试添加SET NOCOUNT ON。
您的密码
insert into @t
select cast(getdate() as varchar(60))
select * from @t
...将返回此
(1 row(s) affected)
id test
----------- --------------------------------------------------
1 Jun 14 2011 3:58PM
(1 row(s) affected)
SQL Server实际有三个结果“项目”。第一个没有关联的结果集。
...以及我的问题SET NOCOUNT ON usage的一个无耻的插件,其中提到了中断ORM之类的问题,因此