我正在使用C#编写一个项目,并且正在执行此语句,但没有返回任何内容(使用数据表来获取数据)
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]=@NewID";
基本上我想做的就是返回刚创建的行。有什么帮助吗?
答案 0 :(得分:2)
无论如何,有更简单的方法可以在一行中完成此任务
首先,将ItemID列设为IDENTITY。否则此代码将在某些时候失败,因为它对于重叠调用
是不安全的然后,第二步,更改代码以使用OUTPUT子句。你可以一次性完成这项工作
INSERT INTO [GroupItems] ([InstanceID], [GroupID], [ItemName], [DisplayName], [Units], [Updated])
OUTOUT INSERTED.*
VALUES(@instanceID, @groupID, @name, @display, @units, CURRENT_TIMESTAMP);