在执行动态插入脚本的情况下,如何在MSSQL存储过程中选择新插入的记录?



我想在我的 sql 服务器数据库中选择新插入的记录。

我知道对我来说正确的解决方案是这样的:

DECLARE @OutputTbl TABLE (ID INT)
INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID INTO @OutputTbl(ID)
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

但我的问题是关于创建插入脚本并在特定的存储过程中执行它。

我在存储过程结束时编写了这两行,以将数据插入到所需的任何表中。

SET @sqlQuery = 'INSERT INTO ' + @tblName + '(' + @param_Collection + ') ' + 'OUTPUT INSERTED.' + @IDENT_Field + ' values('+ @value_Collection +')';
EXEC sys.sp_executesql @sqlQuery;

之前声明的所有变量。

我不知道如何访问身份字段以选择正确的新插入记录。

不,你不能。

必须使用READONLY选项声明表值参数。因此,您无法插入其中。

即使您在动态 SQL 中声明它,也可以将数据插入其中,但无法从表中获取数据,因为表变量与动态 SQL 的作用域隔离。

最新更新