SQL OUTPUT 命令 (Transact-SQL)

SQL OUTPUT 命令 (Transact-SQL)

功能描述:

  • 返回受INSERT、UPDATE、DELETE或MERGE语句影响的每一行的信息,或基于该行的表达式。
  • 这些结果可以返回到处理应用程序中,以用于确认消息、归档和其他此类应用程序需求。
  • 结果也可以插入表或表变量中。
  • 此外,您还可以在嵌套INSERT、UPDATE、DELETE或MERGE语句中捕获输出子句的结果,并将这些结果插入目标表或视图中。

语法:

<OUTPUT_CLAUSE> ::=  
{  
    [ OUTPUT <dml_select_list> INTO { @table_variable | output_table } [ ( column_list ) ] ]  
    [ OUTPUT <dml_select_list> ]  
}  
<dml_select_list> ::=  
{ <column_name> | scalar_expression } [ [AS] column_alias_identifier ]  
    [ ,...n ]  
  
<column_name> ::=  
{ DELETED | INSERTED | from_table_name } . { * | column_name }  
    | $action

参数:

  • @table_variable
    • 指定将返回的行插入其中而不是返回给调用者的表变量。@必须在INSERT、UPDATE、DELETE或MERGE语句之前声明table U变量。
    • 如果未指定column_list ,则表变量的列数必须与输出结果集的列数相同。例外情况是标识列和计算列,必须跳过这些列。如果指定了column_list ,则任何省略的列都必须允许空值或为其指定默认值。
  • output_table
    • 指定将返回的行插入其中而不是返回给调用方的表。output_table可以是临时表。
    • 如果未指定column_list ,则表的列数必须与输出结果集的列数相同。例外情况是identity和computed列。这些必须跳过。如果指定了column_list ,则任何省略的列都必须允许空值或为其指定默认值。
    • output_table 不能:
      • 已启用在其上定义的触发器。
      • 参与外键约束的任一侧。
      • 具有检查约束或启用的规则。
  • column_list
    • 是INTO子句的目标表上列名的可选列表。它类似于INSERT语句中允许的列列表。
  • scalar_expression
    • 计算结果为单个值的符号和运算符的任何组合。标量表达式中不允许使用聚合函数。
    • 对要修改的表中的列的任何引用都必须使用INSERTED或DELETED前缀进行限定。
  • column_alias_identifier 列别名标识符
    • 是用于引用列名的备用名称。
  • DELETED 删除
    • 列前缀,指定由更新或删除操作删除的值。前缀为DELETED的列反映UPDATE、DELETE或MERGE语句完成之前的值。
    • DELETED不能与INSERT语句中的OUTPUT子句一起使用。
  • INSERTED 插入
    • 指定由插入或更新操作添加的值的列前缀。前缀为INSERTED的列反映UPDATE、INSERT或MERGE语句完成后但在执行触发器之前的值。
    • INSERTED不能与DELETE语句中的OUTPUT子句一起使用。
  • from_table_name
    • 是一个列前缀,用于指定要更新或删除的行的DELETE、UPDATE或MERGE语句的FROM子句中包含的表。
    • 如果FROM子句中也指定了要修改的表,则对该表中列的任何引用都必须使用INSERTED或DELETED前缀进行限定。
  • *
    • 指定受delete、insert或update操作影响的所有列将按它们在表中的存在顺序返回。
    • 例如,下面DELETE语句中的OUTPUT DELETED.*将返回从ShoppingCartItem表中删除的所有列:
      • DELETE Sales.ShoppingCartItem
      • OUTPUT DELETED.*;
  • column_name
    • 是显式列引用。对要修改的表的任何引用都必须根据需要使用INSERTED或DELETED前缀正确限定,例如:INSERTED**.**column_name.
  • $action
    • 仅对MERGE语句可用。在MERGE语句的OUTPUT子句中指定nvarchar(10)类型的列,该列根据对该行执行的操作为每行返回三个值之一:“INSERT”、“UPDATE”或“DELETE”。

 

 

 

 

创建时间:2020.09.24  更新时间:

 

SQL OUTPUT 命令 (Transact-SQL)

上一篇:LibreOJ 6282. 数列分块入门 6


下一篇:201621123018《java程序设计》第12周作业总结