Sql 选择合并不工作后的查询
我正在执行以下步骤:Sql 选择合并不工作后的查询,sql,sql-server,sql-server-2008,merge,Sql,Sql Server,Sql Server 2008,Merge,我正在执行以下步骤: 合并stmt。如果值不存在,merge语句会将值插入视图中 选择stmt。选择我插入的记录 但是select查询返回空白。示例代码如下所示: declare @now AS DATETIME = GETUTCDATE(), @uuid AS INT = 1; MERGE A.V_Table AS T ( Select A1, A2 FROM B.Table )S on T.A1 = T1.A1 and T.A2 =
- 合并stmt。如果值不存在,merge语句会将值插入视图中
- 选择stmt。选择我插入的记录
declare @now AS DATETIME = GETUTCDATE(),
@uuid AS INT = 1;
MERGE A.V_Table AS T
(
Select
A1,
A2
FROM B.Table
)S
on T.A1 = T1.A1
and T.A2 = T1.A2
when not matched by target then
insert
(
A1,
A2,
UpdateUUID,
UpdateTimeStamp
)
values
(
s.a1,
s.a2,
@uuid,
@now
);
select *
from A.V_Table
where updateuUid = @uuid and UpdateTimeStamp = @now;
如果我打印出@now和@uuid的值,并在select查询中使用这些值,则会返回记录。但当其按上述方式执行时,情况并非如此
你知道为什么会这样吗?select查询不是只有在合并完成后才运行吗?合并过程后,您缺少的只是“GO”关键字:
declare @now AS DATETIME = GETUTCDATE(),
@uuid AS INT = 1;
MERGE A.V_Table AS T
(
Select
A1,
A2
FROM B.Table
)S
on T.A1 = T1.A1
and T.A2 = T1.A2
when not matched by target then
insert
(
A1,
A2,
UpdateUUID,
UpdateTimeStamp
)
values
(
s.a1,
s.a2,
@uuid,
@now
);
GO
select *
from A.V_Table
where updateuUid = @uuid and UpdateTimeStamp = @now;
uuid而不是变量名是打字错误吗?“你证明应该插入什么东西了吗?”托尼·霍普金森,谢谢。这是个打字错误。是的,我检查过有东西会被插入。我打印出“@now,@uuid”,并用这些值运行select查询,它工作了。如果您在合并上设置了一个output子句。。要查看插入/删除的内容?(输出deleted.updateuid,inserted.updateuid,deleted.UpdateTimeStamp,inserted.UpdateTimeStamp;)