SQL Server 2005 Express edition Синтаксис выходных ключевых слов - PullRequest
1 голос
/ 05 марта 2010

Я играю с ключевым словом Output в SQL Serer 2005 Express. Я написал следующий запрос:

Declare @tempTable as Table(masterLotDB datetime)
Insert  into dbo.tblMasterLot (RecordCreation)
Values ('2009-10-02')
OUTPUT INSERTED.RecordCreation
into @tempTable

Я получаю синтаксическую ошибку Msg 102, уровень 15, состояние 1, строка 6 Неверный синтаксис рядом с 'OUTPUT'. Я пробовал разные комбинации.

Запрос работает без содержимого OUTPUT (то есть он помещает новую запись в tblMasterLot. В tblMasterLot.RecordCreation нет ничего особенного, кроме того, что он определен как «не ноль». Это не первичный ключ или идентификатор.

  1. Что происходит? Есть ли вероятность, что «ВЫХОД» в SQL Express 2005 не поддерживается?
  2. Какие-нибудь учебники по ВЫХОДУ? (особенно в сочетании с Insert).

Ответы [ 2 ]

2 голосов
/ 05 марта 2010

Предложение OUTPUT должно предшествовать VALUES

См. Пример A здесь

После: Я воспроизвел ваш исходный «неправильный синтаксис рядом с OUTPUT», используя ваш код Однако, изменив порядок пунктов, он работает нормально. Вот мой код:

create table #tmp_test (recordCreation datetime)

Declare @tempTable as Table(masterLotDB datetime)

Insert  into #tmp_test (RecordCreation)
OUTPUT INSERTED.RecordCreation into @tempTable
Values ('2009-10-02')

Выход: (Затронут 1 ряд)

1 голос
/ 27 ноября 2010

Выход вставлен. не работает с Express Edition.

Попробуйте с @@ IDENTITY вместо

Заменить скрипт

Declare @tempTable as Table(masterLotDB datetime)

Insert  into #tmp_test (RecordCreation)
OUTPUT INSERTED.RecordCreation into @tempTable
Values ('2009-10-02')

С

DECLARE @TempDate DATETIME

INSERT INTO #tmp_test (RecordCreation)
VALUES ('2009-10-02')

SET @TempDate = @@IDENTITY

SELECT @TempDate
...