程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 2005數據庫中的Output子句

SQL Server 2005數據庫中的Output子句

編輯:關於SqlServer

SQL Server 2005中的output子句,可以使你從修改語句(insert、update、 delete)中將數據返回到表變量中。帶結果的DML的有用方案包括清除和存檔、消 息處理應用程序以及其他方案。這一新的OUTPUT子句的語法為:

OUTPUT INTO @table_variable

可以通過引用插入的表和刪除的表來訪問被修改的 行的舊/新映像,其方式與訪問觸發器類似。在 insert語句中,只能訪問插入的 表。在delete語句中,只能訪問刪除的表。在update語句中,可以訪問插入的表 和刪除的表。下面選用MSDN的例子介紹之:

作為帶結果的DML可能有用的 清除和存檔方案的示例,假設你具有一個大型的Orders表,並且希望定期清除歷 史數據。你還希望將清除的數據復制到一個名為OrdersArchive的存檔表中。你聲 明了一個名為 @deletedOrders的表變量,並且進入一個循環,在該循環中,你使 用上文中的“TOP增強功能”一節中描述的清除方法,成塊地刪除了歷 史數據(比如,早於2003年的定單)。這裡增加的代碼是OUTPUT子句,它將所有 被刪除的行的所有屬性復制到 @deletedOrders表變量中,然後,使用insert INTO語句將該表變量中的所有行復制到OrdersArchive表中:

DECLARE @deletedOrders TABLE
(
orderid INT,
orderdate DATETIME,
empid INT,
custid VARchar(5),
qty INT
)
WHILE 1=1
BEGIN
BEGIN TRAN
delete TOP (5000) FROM Orders
OUTPUT deleted.* INTO @deletedOrders
where orderdate < ’20030101’
insert INTO OrdersArchive
select * FROM @deletedOrders
COMMIT TRAN
delete FROM @deletedOrders
IF @@rowcount < 5000
BREAK
END

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved