SQL OUTPUT 命令 (Transact-SQL)
SQL OUTPUT 命令 (Transact-SQL)
功能描述:
- 返回受INSERT、UPDATE、DELETE或MERGE语句影响的每一行的信息,或基于该行的表达式。
- 这些结果可以返回到处理应用程序中,以用于确认消息、归档和其他此类应用程序需求。
- 结果也可以插入表或表变量中。
- 此外,您还可以在嵌套INSERT、UPDATE、DELETE或MERGE语句中捕获输出子句的结果,并将这些结果插入目标表或视图中。
语法:
1 2 3 4 5 6 7 8 9 10 11 12 | <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 希望内容对你有所帮助,谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报