sql - 如何从 EXEC() 语句中运行的 INSERT 获取 SCOPE_IDENTITY()

标签 sql sql-server scope-identity

我正在存储过程中构建动态插入语句。

我在变量中构建 sql 语法,然后使用 EXEC(@VarcharVariable) 执行它。

SQL 插入工作正常,但是当我执行 SET @Record_ID = Scope_Identity() 时之后,我没有得到任何值。

我怎样才能捕捉到这个?我需要将其包装到 EXEC 中吗? ?

最佳答案

基本示例,使用 sp_executesql

DECLARE @sql NVARCHAR(MAX)
DECLARE @Id INTEGER

SET @sql = 'INSERT MyTable (Field1) VALUES (123); SELECT @Id = SCOPE_IDENTITY()'
EXECUTE sp_executesql @sql, N'@Id INTEGER OUTPUT', @Id OUTPUT

-- @Id now has the ID in

关于sql - 如何从 EXEC() 语句中运行的 INSERT 获取 SCOPE_IDENTITY(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12301075/

相关文章:

sql - Oracle:当同一查询中更具体的值为空时,如何获取默认值?

sql - 在 DB2 数据库中创建存储过程时出错

sql - MySQL:找出哪家商店顾客花了最多的钱

sql-server - SQL Server 索引依赖

sql - SCOPE_IDENTITY 在这种情况下会起作用吗?

c# - 如果使用多插入语句,有什么方法可以使用 SCOPE_IDENTITY 吗?

sql - 明确区分pg_stat_statements中的相似查询?

SQL 比较两个日期的最快方法(非标准 varchar 格式和日期时间)

sql - 声明日期,然后添加下一个工作日

c# - 我的范围身份从身份列检索 ID 时遇到一些问题