2015-05-08 34 views
2

我有麻煩製作一個SQL命令,我要聲明一個臨時表,插入到存儲的表,並輸出從臨時表。SQL命令的問題,與表的聲明,插入並輸出它

我這樣做的原因是解決此錯誤:如果語句包含不帶任何INTO子句的OUTPUT子句,則「DML語句的目標表」不能有任何已啓用的觸發器。這是因爲我使用了Sync Framework。

我的INSERT語句是:

DECLARE InsertList TABLE ([ListId] INT) 
INSERT INTO [List] ([ListName]) VALUES(@ListName) 
OUTPUT [inserted].ListId INTO InsertList 
SELECT * FROM InsertList 

但我得到的錯誤:

"Incorrect syntax near the keyword 'TABLE'.\r\nIncorrect syntax near 'OUTPUT'."

誰能幫助?在此先感謝

+1

聲明缺少@ – PrfctByDsgn

+0

......和VALUES()和OUTPUT子句必須交換位置 – PrfctByDsgn

回答

3

變量與開始於(@)符號,即使表變量和輸出子句是在insert語句錯了地方。

DECLARE @InsertList TABLE ([ListId] INT); 

INSERT INTO [List] ([ListName]) 
OUTPUT [inserted].ListId INTO @InsertList 
VALUES(@ListName); 

SELECT * FROM @InsertList; 
+0

也許我誤解的東西,但是你有沒有宣佈@InsertList,將工作呢? – Thisen

+0

@Thisen'@ InsertList'在第一行'DECLARE @InsertList TABLE([ListId] INT);'聲明。 –

+0

但是我不需要給它一個像@ @ ListName這樣的值嗎? – Thisen

1

在查詢中您嘗試使用Table類型變量。變量需要用@聲明。

正確的代碼應該是:在SQL Server

DECLARE @InsertList TABLE ([ListId] INT)