sql – 使用输出在merge语句中设置变量
发布时间:2021-05-22 17:29:22 所属栏目: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 = 'somet
我有一个合并声明,应该始终更新或插入单个记录.我想记住变量中该语句的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.两人都这样说:
(编辑:马鞍山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sqlserver自动增长列引起的问题解决方法
- sql-server – 使用XML阅读器优化计划
- sql-server – sys.databases中某些列的排序规则是什么?
- sql-server-2008 – SQL Server 2008 – 一个表24gb,删除了
- sql-server – 未记录的CONVERT样式 – datetime 23
- 使用.SQL文件创建MySQL数据库
- 如何选择和排序不在Groupy中的列按SQL语句 – Oracle
- SQL截取字符串函数了解
- sql-server – SQL Server CASE语句是否评估所有条件或在第
- sql-server – 无法在计算列上创建筛选索引
站长推荐
热点阅读