当前位置:首页 > 系统运维 > 正文内容

SQL Server 2008 Merge语句之功能,OUTPUT

a8116255316年前 (2010-07-19)系统运维6

此文章主要讲述的是SQL Server 2008 Merge语句之功能,OUTPUT,SQL Server 2005的Output功能能把Insert,Update以及Delete的内容全部都返回,2008数据库中的Output同样具有此功能,下面介绍一下把Output同2008的新T-SQL语句Merge组合使用的 *** :

SQL Server 2005中的Output功能可以把Insert,Update和Delete的内容都返回,2008中的Output同样具有此功能,下面介绍一下把Output同2008的新T-SQL语句Merge组合使用的 *** :

新建下面表:

view plaincopy to clipboardprint    CREATE TABLE Book(   ISBN varchar(20) PRIMARY KEY,   Price decimal,   Shelf int)   CREATE TABLE WeeklyChange(   ISBN varchar(20) PRIMARY KEY,   Price decimal,   Shelf int)   CREATE TABLE BookHistory(   Action nvarchar(10),   NewISBN varchar(20),   NewPrice decimal,   NewShelf int,   OldISBN varchar(20),   OldPrice decimal,   OldShelf int,   ArchivedAt datetime2)   CREATE TABLE Book(   ISBN varchar(20) PRIMARY KEY,   Price decimal,   Shelf int)   CREATE TABLE WeeklyChange(   ISBN varchar(20) PRIMARY KEY,   Price decimal,   Shelf int)   CREATE TABLE BookHistory(   Action nvarchar(10),   NewISBN varchar(20),   NewPrice decimal,   NewShelf int,   OldISBN varchar(20),   OldPrice decimal,   OldShelf int,   ArchivedAt datetime2)   

SQL Server 2008 Merge语句的OUTPUT功能的SQL语句为

view plaincopy to clipboardprint    MERGE Book AS B   USING WeeklyChange AS WC   ON B.ISBN = WC.ISBN   WHEN MATCHED AND (B.Price <> WC.Price OR B.Shelf <> WC.Shelf) THEN   UPDATE SET B.Price = WC.Price, B.Shelf = WC.Shelf   WHEN NOT MATCHED THEN   INSERT VALUES(WC.ISBN, WC.Price, WC.Shelf)   OUTPUT $action, inserted.*, deleted.*, SYSDATETIME()   INTO BookHistory;   MERGE Book AS B   USING WeeklyChange AS WC   ON B.ISBN = WC.ISBN   WHEN MATCHED AND (B.Price <> WC.Price OR B.Shelf <> WC.Shelf) THEN   UPDATE SET B.Price = WC.Price, B.Shelf = WC.Shelf   WHEN NOT MATCHED THEN   INSERT VALUES(WC.ISBN, WC.Price, WC.Shelf)   OUTPUT $action, inserted.*, deleted.*, SYSDATETIME()   INTO BookHistory;  

结果集为:

SELECT * FROM BookHistory   GO   Action NewISBN NewPrice NewShelf OldISBN OldPrice OldShelf ArchivedAt   UPDATE A 101 1 A 100 1 2007-11-25 14:47:23.9907552   INSERT C 300 3 NULL NULL NULL 2007-11-25 14:47:23.9907552   

这里有Insert和Update两种Output情况。假如只需要其中一种,可以用下面这种 *** 过滤:

view plaincopy to clipboardprint    INSERT INTO Book(ISBN, Price, Shelf, ArchivedAt)   SELECT ISBN, Price, Shelf, GETDATE() FROM   (MERGE Book AS B   USING WeeklyChange AS WC   ON B.ISBN = WC.ISBN AND B.ArchivedAt IS NULL   WHEN MATCHED AND (B.Price <> WC.Price OR B.Shelf <> WC.Shelf) THEN   UPDATE SET Price = WC.Price, Shelf = WC.Shelf   WHEN NOT MATCHED THEN   INSERT VALUES(WC.ISBN, WC.Price, WC.Shelf, NULL)   OUTPUT $action, WC.ISBN, Deleted.Price, Deleted.Shelf   ) CHANGES(Action, ISBN, Price, Shelf)   WHERE Action = 'UPDATE';  

以上的相关内容就是对SQL Server 2008 Merge语句的OUTPUT功能的介绍,望你能有所收获。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/22067.html

分享给朋友:

“SQL Server 2008 Merge语句之功能,OUTPUT” 的相关文章

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

故障现象: Windows 7酷狗软件无声音,系统声音正常。 原因分析: 1. 查看酷狗软件设置 2. 查看系统设置 解决方案: 1. Windows 7操作方法 如图:查看是否处于禁音状态   Windows 7系统声音正常酷狗音乐无声音 2. 查看设置音频输出是否...

解决windows 7无法将程序锁定到任务栏或附到开始菜单的方法

解决windows 7无法将程序锁定到任务栏或附到开始菜单的方法

出现该问题的原因是由于使用第三方优化软件消除快捷方式的小箭头引起的。 1、在开始搜索框中键入“regedit”,按回车键打开注册表编辑器。 2、依次定位到以下分支:HKEY_CLASSES_ROOTlnkfile。 3、在lnkfile项上鼠标右键单击“新建”——“字符串值”。...

windows 7系统件夹和文件都不显示名字如何解决

windows 7系统件夹和文件都不显示名字如何解决

假如碰到电脑里的文件夹和文件全都不显示名字了(如下图),是不是电脑中毒了呢 请教下笔者有没好的解决方法!下面是笔者给出的答案,希望能够帮助到大家! 首先打开你用来装图片的文件夹(缩略图下面的文字不显示的文件夹),然后但击工具栏上的“查看”选择“平铺”, 下面就是关键:要按住SHIFT键不...

windows 7系统重装后卡在正在启动Windows开机界面怎么办

windows 7系统重装后卡在正在启动Windows开机界面怎么办

重装系统是我们面对许多电脑问题时的终极方法,不过重装系统也不意味着就能将全部的问题都修复。一些用户在重装系统后开机时,电脑卡在“正在启动Windows”开机界面上了,这要怎么解决呢? Windows 7系统重装后卡在开机界面的解决方法: 一、首先可以看看该故障出现的原因是否是因为启动了acp...

windows 7系统怎么取消禁ping命令?

windows 7系统怎么取消禁ping命令?

当我在虚拟机的linux系统中ping本机的ip发现ping不通,而本机可以ping通虚拟机中的ip。应该是出于安全考虑吧,Windows 7默认在防火墙里禁止了。 1、查看主机ip 打开“开始”程序中的“附件”,找到“命令提示符”打开。输入命令:ipconfig,可以看到本机的ip是192.1...

windows 7系统开机提示Windows驱动器未就绪的故障原因及解决方法

windows 7系统开机提示Windows驱动器未就绪的故障原因及解决方法

 故障分析: 主要原因应该是不存在软盘驱动器或驱动器未安装,找到故障原因后,Windows 7 32位系统只要将软盘驱动器禁用就可以了。 解决措施: 1、右键点击计算机,选择管理,打开计算机管理窗口; 2、在计算机管理中,找到设备管理器,在右边的软盘控制器中右击,选择卸载即可。 以...