Jai*_*ime 10 sql t-sql sql-server
我有一个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
Run Code Online (Sandbox Code Playgroud)
谢谢!
Bra*_*AGr 12
我遇到了同样的问题,并在http://sqlblog.com/blogs/adam_machanic/archive/2009/08/24/dr-output-or-how-i-learned-to-stop-worrying-and找到了解决方案-爱最merge.aspx
基本上它会破坏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;
Run Code Online (Sandbox Code Playgroud)
你必须加入回到@act_map_matrix
上Act
获得"旧"值.
它在INSERT语句中根本不可用
编辑:希望@new_scriptID和"scriptid = 2"可以是连接列