我有以下存储过程
SashaOutput.github.io
我称之为:
CREATE PROCEDURE [dbo].[InsertCategory]
@Name nvarchar(100)
AS
BEGIN
INSERT INTO [dbo].[Category]([Name])
OUTPUT INSERTED.CategoryId, INSERTED.[Timestamp]
VALUES (@Name)
END
我想知道插入的Category的id是什么(它是在insert语句中输出的)。它被写入输出,但我无法弄清楚如何在不修改存储过程的情况下将其分配给变量。在C#中,我可以使用command.ExecuteReader,我得到它,但我不知道如何在SQL Server中获取它。
我也不能使用SCOPE_IDENTITY,因为我们有自己的生成ID系统。
答案 0 :(得分:4)
试试这个:
-- 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
答案 1 :(得分:1)
您可以声明一个表并将输出插入其中。
CREATE PROCEDURE [dbo].[InsertCategory]
@Name nvarchar(100)
AS
BEGIN
DECLARE @Result AS TABLE (
CategoryId int,
TimeStamp varchar(50)
)
INSERT INTO [dbo].[Category]([Name])
OUTPUT INSERTED.CategoryId, INSERTED.[Timestamp]
INTO @Result(CategoryId, TimeStamp)
VALUES (@Name)
SElect * from @Result
END