【问题标题】:Inserting a row in a table and storing its scope identity in a variable in a stored procedure在表中插入一行并将其范围标识存储在存储过程的变量中
【发布时间】:2015-04-21 14:20:32
【问题描述】:

我是存储过程的新手,只知道 SQL 的基础知识。在一些 SO 问题的帮助下,我能够弄清楚 SCOPE_IDENTITY() 函数可用于获取最近添加的行的标识值。现在我正在尝试使用存储过程在表中插入一行,并且我希望这个新插入的行的标识必须分配给存储过程的变量。以下是代码:

DECLARE @retID int = -1
SET @retID = (INSERT INTO [InfoValues]([InfoID],[Value],[UserID],[DateAdded],[DateUpdated]) VALUES(@item2,@item,@UserID,GETDATE(), GETDATE()); SELECT SCOPE_IDENTITY())

但是这段代码在INSERT 子句处显示语法错误。那么正确的做法是什么呢?

【问题讨论】:

标签: sql sql-server database stored-procedures sql-server-2012


【解决方案1】:

你已经接近了。您需要在插入发生后设置变量。

DECLARE @retID int = -1;

INSERT INTO [InfoValues]
    ([InfoID],[Value],[UserID],[DateAdded],[DateUpdated])     
    VALUES
    (@item2,@item,@UserID,GETDATE(), GETDATE()); 

SET @retID = SCOPE_IDENTITY();

【讨论】:

  • 哇,真的很接近。谢谢:)
猜你喜欢
  • 2012-01-28
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-19
相关资源
最近更新 更多