天天看点

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