我正在使用SQL Serer 2005 Express中的Output关键字。我写了以下查询:
Declare @tempTable as Table(masterLotDB datetime)
Insert into dbo.tblMasterLot (RecordCreation)
Values ('2009-10-02')
OUTPUT INSERTED.RecordCreation
into @tempTable
我收到Msg 102,Level 15,State 1,Line 6的语法错误 'OUTPUT'附近的语法不正确。我尝试了各种组合。
查询在没有OUTPUT的情况下工作(即它在tblMasterLot中放置一条新记录,tblMasterLot.RecordCreation没有什么特别的,除了被定义为'not null'。它不是主键或身份。
答案 0 :(得分:2)
OUTPUT子句应该在VALUES之前
参见示例A here
跟进: 我使用您的代码重现了原始的'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 :(得分:1)
输出已插入。不适用于Express版。尝试使用 @@ 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