我有一个T-SQL语句,基本上执行插入操作并将一些插入的值输出到表变量以供以后处理。
我有办法将所选记录的旧标识ID存储到我的表变量中。如果我使用下面的代码,我得到“多部分标识符”a.ID“无法绑定”。错误。
DECLARE @act_map_matrix table(new_act_id INT, old_ID int)
DECLARE @new_script_id int
SET @new_script_id = 1
INSERT INTO Act
(ScriptID, Number, SubNumber, SortOrder, Title, IsDeleted)
OUTPUT inserted.ID, a.ID INTO @act_map_matrix
SELECT
@new_scriptID, a.Number, a.SubNumber, a.SortOrder, a.Title, a.IsDeleted
FROM Act a WHERE a.ScriptID = 2
谢谢!
答案 0 :(得分:12)
基本上它会破坏MERGE命令以将其用于插入,因此您可以访问OUTPUT子句中未插入的源字段。
MERGE INTO people AS tgt
USING #data AS src ON
1=0 --Never match
WHEN NOT MATCHED THEN
INSERT
(
name,
current_salary
)
VALUES
(
src.name,
src.salary
)
OUTPUT
src.input_surrogate,
inserted.person_id
INTO #surrogate_map;
答案 1 :(得分:5)
您必须将@act_map_matrix
加入Act
以获取“旧”值。
它在INSERT语句中根本不可用
编辑:希望@new_scriptID和“scriptid = 2”可以成为连接列