zoukankan      html  css  js  c++  java
  • 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  更新时间:

    博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你所有帮助,谢谢!
  • 相关阅读:
    linux中服务器定时程序设定
    Linux中java项目环境部署,简单记录一下
    四则运算使用栈和后缀表达式
    PAT乙1003
    L7,too late
    PAT乙1002
    L6,Percy Buttons
    如何计算递归算法的时间复杂度
    c#打印(转)
    C中数组与指针【转】
  • 原文地址:https://www.cnblogs.com/guorongtao/p/13722402.html
Copyright © 2011-2022 走看看