SQL Server 2005 Express版输出关键字语法

时间:2010-03-04 21:34:00

标签: sql sql-server sql-server-2005 sql-server-express

我正在使用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'。它不是主键或身份。

  1. 发生了什么事? SQL Express 2005中是否真的不支持“OUTPUT”?
  2. 关于OUTPUT的任何教程? (特别是与Insert一起使用)。

2 个答案:

答案 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