SQL Server - 复合语句

时间:2011-09-11 13:11:36

标签: sql sql-server

我正在使用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";

基本上我想做的就是返回刚创建的行。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

  • 由于@variables为NULL,您可能缺少信息。你怎么设置它们?
  • 以某种方式抑制错误。
  • 您是否将数据存储在表格中,或者只是没有结果?

无论如何,有更简单的方法可以在一行中完成此任务

首先,将ItemID列设为IDENTITY。否则此代码在某些时候失败,因为它对于重叠调用

是不安全的

然后,第二步,更改代码以使用OUTPUT子句。你可以一次性完成这项工作

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