sql – 使用输出在merge语句中设置变量
发布时间:2021-05-22 13:57:50 所属栏目:MsSql教程 来源:网络整理
导读:我有一个合并声明,应该始终更新或插入单个记录.我想记住变量中该语句的ID.它看起来像这样: DECLARE @int intMERGE dbo.table AS AUSING (SELECT 'stringtomatch' AS string) AS B ON B.string= A.stringWHEN MATCHED THEN UPDATE SET somecolumn = 'somethin
|
我有一个合并声明,应该始终更新或插入单个记录.我想记住变量中该语句的ID.它看起来像这样: DECLARE @int int
MERGE dbo.table AS A
USING (SELECT 'stringtomatch' AS string) AS B ON B.string= A.string
WHEN MATCHED THEN
UPDATE SET somecolumn = 'something'
WHEN NOT MATCHED THEN
INSERT
VALUES ('stringtomatch','something')
OUTPUT @int = inserted.ID;
现在这样做不会起作用,因为你不能用这种方式在输出子句中设置@int.我知道我可以创建一个temptable并在输出中使用INTO @temptable.但是因为我知道它总是单个记录,所以我想在INT变量中使用ID. 解决方法不,您必须将表变量与OUTPUT一起使用但是,你可以这样做…… ...
WHEN MATCHED THEN
UPDATE
SET
@int = ID,somecolumn = 'something'
WHEN NOT MATCHED THEN
INSERT
VALUES ('stringtomatch','something');
SET @int = ISNULL(@int,SCOPE_IDENTITY());
长期以来,“assign in UPDATE”一直是SQL Server的有效语法.见MERGE on MSDN.两人都这样说:
(编辑:天瑞地安资讯网_瑞安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
- sql-server – 在IF EXISTS中包装查询使得它非常
- sql-server – 使SqlClient默认为ARITHABORT ON
- 你能在SQL中定义“文字”表吗?
- sql-server-2005 – 永久删除表时回收SQL Server
- sql-server – 使用存储过程作为业务逻辑层
- sql-server – SQL Server表达的数据库数量
- 处理SQL Server的“此数据库没有有效所有者”问题
- sql-server – SQL Server如何确定缺失索引请求中
- sql-server-2008 – 与SQL Server分开安装Team F
- 初学者SQL问题:具有多个COUNT(*)结果的算术
热点阅读

