我有以下存储过程
CREATE PROCEDURE [dbo].[InsertCategory]
@Name nvarchar(100)
AS
BEGIN
INSERT INTO [dbo].[Category]([Name])
OUTPUT INSERTED.CategoryId, INSERTED.[Timestamp]
VALUES (@Name)
END
我这样称呼它:
EXEC [dbo].[InsertCategory] @Name= @Name
我想知道插入的类别的 id 是什么(它在插入语句中输出)。它被写入输出,但我不知道如何在不修改存储过程的情况下将它分配给变量。在 C# 中,我可以使用 command.ExecuteReader 并获得它,但我不知道如何在 SQL Server 中获得它。
我也不能使用 SCOPE_IDENTITY,因为我们有自己的生成 ID 的系统。
最佳答案
尝试这个:
-- count use a temp table as well
-- syntax: CREATE TABLE #t(CategoryId int,[Timestamp] datetime)
DECLARE @t table(CategoryId int,[Timestamp] datetime)
INSERT @t(CategoryId, [TimeStamp])
EXEC [dbo].[InsertCategory] @Name= @Name
SELECT CategoryId, [TimeStamp]
FROM @t
关于sql-server - 从存储过程读取 INSERT 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42973336/