2010-03-04 57 views
1

我正在使用SQL Serer 2005 Express中的Output關鍵字。我已經寫了下面的查詢:SQL Server 2005 Express版本輸出關鍵字語法

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

我得到的消息102,級別15,狀態1,行的語法錯誤6 附近有語法錯誤「輸出」。我嘗試了各種組合。

查詢作品,未經輸出的東西(即它把在tblMasterLot一個新的記錄,沒有什麼特別的比其他tblMasterLot.RecordCreation被定義「NOT NULL」。這不是一個主鍵或標識。

  1. 這是怎麼回事?任何機會,「產出」是不是真的支持的SQL Express上輸出2005?
  2. 任何教程?(尤其是在插入連詞)。

回答

2

輸出條款應來之前價值觀

請參考例子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行(S)的影響)

+0

我不相信這就是答案。在這種情況下,值對應於您在第一個表中放入的內容('tblMasterLot')。不過,我認爲這與此有關。我看到MSDN文檔經常在OUTPUT後顯示使用VALUES。但是,我將在這種情況下特別提出什麼?我確實嘗試了您的建議,並將「關鍵字附近的語法不正確」錯誤寫入「。」中。 – Dave 2010-03-04 22:14:04

+0

謝謝,這清除了它。 – Dave 2010-03-05 17:46:56

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