我想在我的 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 的作用域隔离。