我正在使用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之类的问题,因此

08-07 06:26