sql-server - 从存储过程读取 INSERT 输出

标签 sql-server

我有以下存储过程

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/

相关文章:

sql-server - 填写行中缺失的日期

sql-server - 如何避免 SQL 作业中出现 "Warning: String or Binary data would be truncated"导致失败

sql-server - 使用带有两个表的 SQL View 在 MS-Access 表单上编辑数据的任何方法

sql时区计算

sql-server - 并行计算环境中使用JDBC时服务器内存不足问题

sql - 在 sql server 查询中按月分组日期(存储过程)

sql - 在没有游标的 SQL Server 中循环

sql-server - SQL 网络实例相关问题(错误 258)

sql - 如何将 Excel 数据转换为 SQL 插入?

sql-server - 使用全文搜索谓词在 sql server 中短路