sql – 使用输出在merge语句中设置变量
发布时间:2021-05-22 12:33:54 所属栏目: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.两人都这样说:
(编辑:徐州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – Transact-SQL查询中字符串前的N前缀
- Sql事务怎么理解?一文迅速了解Sql事务的用法
- sql-server – 资源池“internal”中没有足够的系统内存来运
- sql – 具有Desc / Asc排序的Order By子句的Case语句
- .net – 优化LINQ to SQL查询的工具和技术
- sql server怎样写查询语句?聊聊查询性能问题
- sql-server – 如何故意造成死锁?
- sql-update – 从另一个表更新多个列 – 需要Oracle格式
- sql – 选择仅包含特定表的数据库
- sql-server-2008 – SQL 2008每10分钟执行一次CHECKDB,任何
站长推荐
热点阅读