代码改变世界

SQL output语句的用法

2012-01-11 18:19  假面Wilson  阅读(444)  评论(0编辑  收藏  举报

以下示例将行插入test表,并使用 OUTPUT 子句将语句的结果返回到 @mytable table 变量中
 declare @mytable table
(
  id int identity(1,1) primary key,
  name varchar(50)
)
 insert into test output inserted.name into @mytable values('147')
select * from soloreztest
select * from @mytable

结果是:
 

  output    into子句是将向test表里面的数据同步的插入的@mytable的表变量里面
  output 子句则只是用于显示被改变的数据INSERTED 或 DELETED 前缀
  inserted 前缀:用于检索新插入表中或是更新后的数据的数据 可用与insert和update语句中不能在delete语句中出现
  deleted 前缀: 用于检索被删除或是更新前的数据 可用与delete和update语句中不能在insert 语句中出现

 B. 将 OUTPUT 用于 DELETE 语句
   以下实例是将在表中test删除行是放回被删除行的信息
     delete test  output deleted.* where id=2
  

 

 同理以上也可使用会 output into语句将被删除的信息插入到一个新表中


 C. 将 OUTPUT  用于 UPDATE
 以下实例将在表中更新数据是使用output 返回修改前的数据和修改后的数据
update test   set name='zz' output  inserted.name,deleted.name where id=3
 
inserted.name:表示的是在 soloreztest表中更新后的数据内容。
deleted.name :表示的是在soloreztest表中的更新前的数据内容。