我是存储过程的新手,只知道 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
子句处显示语法错误。那么正确的做法是什么呢?
最佳答案
你很接近。您需要在插入发生后设置变量。
DECLARE @retID int = -1;
INSERT INTO [InfoValues]
([InfoID],[Value],[UserID],[DateAdded],[DateUpdated])
VALUES
(@item2,@item,@UserID,GETDATE(), GETDATE());
SET @retID = SCOPE_IDENTITY();
关于sql - 在表中插入一行并将其范围标识存储在存储过程的变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29774934/