如何从EXERT()语句中的INSERT中获取SCOPE_IDENTITY()

Jon*_*ach 4 sql sql-server scope-identity

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

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

SQL插件工作正常,但是当我执行SET @Record_ID = Scope_Identity()后,我没有得到一个值.

我怎么能抓住这个?我需要把它包裹进去EXEC吗?

Ada*_*Dev 13

基本示例,使用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
Run Code Online (Sandbox Code Playgroud)


Mad*_*nan 0

是的,它应该是动态sql的一部分,这就是scope_identity()的用途