日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
SQLServer2008Merge語(yǔ)句之功能,OUTPUT

此文章主要講述的是SQL Server 2008 Merge語(yǔ)句之功能,OUTPUT,SQL Server 2005的Output功能能把Insert,Update以及Delete的內(nèi)容全部都返回,2008數(shù)據(jù)庫(kù)中的Output同樣具有此功能,下面介紹一下把Output同2008的新T-SQL語(yǔ)句Merge組合使用的方法:

創(chuàng)新互聯(lián)專(zhuān)注于丹寨企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站定制開(kāi)發(fā)。丹寨網(wǎng)站建設(shè)公司,為丹寨等地區(qū)提供建站服務(wù)。全流程按需求定制開(kāi)發(fā),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)

SQL Server 2005中的Output功能可以把Insert,Update和Delete的內(nèi)容都返回,2008中的Output同樣具有此功能,下面介紹一下把Output同2008的新T-SQL語(yǔ)句Merge組合使用的方法:

新建下面表:

 
 
 
  1. view plaincopy to clipboardprint?   
  2. CREATE TABLE Book(   
  3. ISBN varchar(20) PRIMARY KEY,   
  4. Price decimal,   
  5. Shelf int)   
  6. CREATE TABLE WeeklyChange(   
  7. ISBN varchar(20) PRIMARY KEY,   
  8. Price decimal,   
  9. Shelf int)   
  10. CREATE TABLE BookHistory(   
  11. Action nvarchar(10),   
  12. NewISBN varchar(20),   
  13. NewPrice decimal,   
  14. NewShelf int,   
  15. OldISBN varchar(20),   
  16. OldPrice decimal,   
  17. OldShelf int,   
  18. ArchivedAt datetime2)   
  19. CREATE TABLE Book(   
  20. ISBN varchar(20) PRIMARY KEY,   
  21. Price decimal,   
  22. Shelf int)   
  23. CREATE TABLE WeeklyChange(   
  24. ISBN varchar(20) PRIMARY KEY,   
  25. Price decimal,   
  26. Shelf int)   
  27. CREATE TABLE BookHistory(   
  28. Action nvarchar(10),   
  29. NewISBN varchar(20),   
  30. NewPrice decimal,   
  31. NewShelf int,   
  32. OldISBN varchar(20),   
  33. OldPrice decimal,   
  34. OldShelf int,   
  35. ArchivedAt datetime2)   

SQL Server 2008 Merge語(yǔ)句的OUTPUT功能的SQL語(yǔ)句為

 
 
 
  1. view plaincopy to clipboardprint?   
  2. MERGE Book AS B   
  3. USING WeeklyChange AS WC   
  4. ON B.ISBN = WC.ISBN   
  5. WHEN MATCHED AND (B.Price <> WC.Price OR B.Shelf <> WC.Shelf) THEN   
  6. UPDATE SET B.Price = WC.Price, B.Shelf = WC.Shelf   
  7. WHEN NOT MATCHED THEN   
  8. INSERT VALUES(WC.ISBN, WC.Price, WC.Shelf)   
  9. OUTPUT $action, inserted.*, deleted.*, SYSDATETIME()   
  10. INTO BookHistory;   
  11. MERGE Book AS B   
  12. USING WeeklyChange AS WC   
  13. ON B.ISBN = WC.ISBN   
  14. WHEN MATCHED AND (B.Price <> WC.Price OR B.Shelf <> WC.Shelf) THEN   
  15. UPDATE SET B.Price = WC.Price, B.Shelf = WC.Shelf   
  16. WHEN NOT MATCHED THEN   
  17. INSERT VALUES(WC.ISBN, WC.Price, WC.Shelf)   
  18. OUTPUT $action, inserted.*, deleted.*, SYSDATETIME()   
  19. INTO BookHistory;  

 

結(jié)果集為:

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

這里有Insert和Update兩種Output情況。如果只需要其中一種,可以用下面這種方法過(guò)濾:

 
 
 
  1. view plaincopy to clipboardprint?   
  2. INSERT INTO Book(ISBN, Price, Shelf, ArchivedAt)   
  3. SELECT ISBN, Price, Shelf, GETDATE() FROM   
  4. (MERGE Book AS B   
  5. USING WeeklyChange AS WC   
  6. ON B.ISBN = WC.ISBN AND B.ArchivedAt IS NULL   
  7. WHEN MATCHED AND (B.Price <> WC.Price OR B.Shelf <> WC.Shelf) THEN   
  8. UPDATE SET Price = WC.Price, Shelf = WC.Shelf   
  9. WHEN NOT MATCHED THEN   
  10. INSERT VALUES(WC.ISBN, WC.Price, WC.Shelf, NULL)   
  11. OUTPUT $action, WC.ISBN, Deleted.Price, Deleted.Shelf   
  12. ) CHANGES(Action, ISBN, Price, Shelf)   
  13. WHERE Action = 'UPDATE';  

以上的相關(guān)內(nèi)容就是對(duì)SQL Server 2008 Merge語(yǔ)句的OUTPUT功能的介紹,望你能有所收獲。


網(wǎng)站標(biāo)題:SQLServer2008Merge語(yǔ)句之功能,OUTPUT
文章位置:http://www.5511xx.com/article/djjpdhc.html