2011-09-11 51 views
0

我工作在C#項目,並正在執行這一說法,但沒有得到帶回點什麼(用數據表來找回數據)SQL服務器 - 複合語句

string SQL = 
    "DECLARE @NewID int; SELECT TOP 1 @NewID = [ItemID] + 1 FROM [GroupItems] ORDER BY [ItemID] DESC; " + 
    "INSERT INTO [GroupItems] ([InstanceID], [ItemID], [GroupID], [ItemName], [DisplayName], [Units], [Updated]) " + 
    "VALUES(@instanceID, @NewID, @groupID, @name, @display, @units, CURRENT_TIMESTAMP); SELECT * FROM [GroupItems] WHERE [ItemID][email protected]"; 

基本上我想做的是返回我剛剛創建的行。任何幫助?

+0

此查詢在SQL Management Studio Express中正常工作嗎? – Sudantha

+1

也許添加執行查詢的代碼? – Andomar

+0

你可以發佈組項目表的結構嗎?如果您將最後一行更改爲SELECT 1,您是否返回1 ... – Sparky

回答

2
  • 由於@variables爲NULL,您可能會丟失信息。你如何設置它們?
  • 以某種方式抑制錯誤。
  • 你把數據存儲在表中,還是隻是沒有結果?

無論如何,有更簡單的方法來做到這一條線

首先,使ITEMID列的身份。否則這個代碼失敗,因爲它是不安全的重疊調用

然後第二,更改代碼使用OUTPUT子句。您可以一次完成此操作

INSERT INTO [GroupItems] ([InstanceID], [GroupID], [ItemName], [DisplayName], [Units], [Updated]) 
OUTOUT INSERTED.* 
VALUES(@instanceID, @groupID, @name, @display, @units, CURRENT_TIMESTAMP);