天天看點

Sql server Output 用法

Output遇到了新用法:

以下是查閱的MSDN的用法:

下例向 ScrapReason 表插入一行,并使用 OUTPUT 子句将語句的結果傳回給 @MyTableVartable 變量。 由于 ScrapReasonID 列使用 IDENTITY 屬性定義,是以未在 INSERT 語句中為該列指定一個值。 但請注意,将在列 inserted.ScrapReasonID 内的 OUTPUT 子句中傳回由資料庫引擎為該列生成的值。

以下示例将删除 ShoppingCartItem 表中的所有行。 子句 OUTPUT deleted.* 指定 DELETE 語句的結果(即已删除的行中的所有列)傳回到執行調用的應用程式。 後面的 SELECT 語句驗證對 ShoppingCartItem 表所執行的删除操作的結果。

下面的示例将 Employee 表中 VacationHours 列的前 10 行更新 25%。 OUTPUT 子句将在将 UPDATE 語句應用于列 deleted.VacationHours 之前已存在的 VacationHours 值和 inserted.VacationHours 列中更新後的值傳回給 @MyTableVartable 變量。

在它後面的兩個 SELECT 語句傳回 @MyTableVar 中的值以及 Employee 表中更新操作的結果。

下例建立在示例 C 的基礎上,它在 OUTPUT 子句中定義一個表達式,作為更新後的 VacationHours 值與應用更新前的 VacationHours 值之間的差。 該表達式的值傳回給列 VacationHoursDifference 中的 @MyTableVartable 變量。

以下示例使用指定的 ProductID 和 ScrapReasonID,針對 WorkOrder 表中的所有工作順序更新 ScrapReasonID 列。 OUTPUT INTO 子句傳回所更新表 (WorkOrder) 中的值以及 Product 表中的值。 在 FROM 子句中使用 Product 表來指定要更新的行。 由于 WorkOrder 表上定義了 AFTER UPDATE 觸發器,是以需要 INTO 關鍵字。

以下示例将按照在 DELETE 語句的 FROM 子句中所定義的搜尋條件删除 ProductProductPhoto 表中的行。 OUTPUT 子句傳回所删除表(deleted.ProductID、deleted.ProductPhotoID)中的列以及 Product 表中的列。 在 FROM 子句中使用該表來指定要删除的行。

以下示例使用 .WRITE 子句更新 Production.Document 表内 DocumentSummary 這一 nvarchar(max) 列中的部分值。 通過指定替換單詞、現有資料中要替換的單詞的開始位置(偏移量)以及要替換的字元數(長度),将單詞 components 替換為單詞 features。 此示例使用 OUTPUT 子句将 DocumentSummary 列的前像和後像傳回到 @MyTableVartable 變量。 請注意,将傳回 DocumentSummary 列的全部前像和後像。

下例在觸發器中使用 OUTPUT 子句來傳回觸發器操作的結果。 首先,建立一個 ScrapReason 表的視圖,然後對該視圖定義 INSTEAD OF INSERT 觸發器,進而使使用者隻修改基表的 Name 列。 由于 ScrapReasonID 列在基表中是 IDENTITY 列,是以觸發器忽略使用者提供的值。 這允許資料庫引擎自動生成正确的值。 同樣,使用者為 ModifiedDate 提供的值也被忽略并設定為正确的日期。 OUTPUT 子句傳回實際插入 ScrapReason 表中的值。

這是在 2004 年 4 月 12 日 ('2004-04-12') 生成的結果集。 請注意,ScrapReasonIDActual 和 ModifiedDate 列反映由觸發器操作生成的值而不是 INSERT 語句中提供的值。

ScrapReasonID  Name             ModifiedDate

-------------  ---------------- -----------------------

17             My scrap reason  2004-04-12 16:23:33.050

下面的示例建立 EmployeeSales 表,然後使用 INSERT 語句向其中插入若幹行,并使用 SELECT 語句從源表中檢索資料。 EmployeeSales 表包含辨別列 (EmployeeID) 和計算列 (ProjectedSales)。

以下示例将按照在 DELETE 語句的 FROM 子句中所定義的搜尋條件删除 ProductProductPhoto 表中的行。 OUTPUT INTO 子句将被删除表中的列(deleted.ProductID、deleted.ProductPhotoID)及 Product 表中的列傳回給 @MyTableVartable 變量。 在 FROM 子句中使用 Product 表來指定要删除的行。 OUTPUT 子句将 ProductProductPhoto 表中的 deleted.ProductID、deleted.ProductPhotoID 列以及行的删除日期和時間傳回到執行調用的應用程式。

下面的示例捕獲從 MERGE 語句的 OUTPUT 子句傳回的資料,并将這些資料插入另一個表。 MERGE 語句每天根據在 SalesOrderDetail 表中處理的訂單更新 ProductInventory 表的 Quantity 列。 如果産品的庫存降至 0 或更低,它還會删除與這些産品對應的行。 本示例捕獲已删除的行并将這些行插入另一個表 ZeroInventory 中,該表跟蹤沒有庫存的産品。

msdn> https://msdn.microsoft.com/en-us/library/ms177564.aspx

上一篇: html input