Поддерживает ли JPA 2.0 табличные переменные SQL Server? - PullRequest
2 голосов
/ 14 июня 2011

Я использую JPA 2.0 и SQL Server 2008, и я определил, что JPA не нравятся мои хранимые процедуры, когда я использую переменную таблицы.

Например, этот sproc работает:

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

Я бы не хотел переписывать мои сложные sprocs, чтобы не использовать табличные переменные, если я могу помочь.

Спасибо за любые предложения.

1 Ответ

6 голосов
/ 14 июня 2011

Случайные мысли: попробуйте добавить 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 использование , где из-за этого упоминается нарушение ORM и тому подобное

...