数据修改之返回修改的数据

地址:http://blog.csdn.net/xuxianmei/article/details/9098999

使用output子句嵌入到insert update delete 语句中,可以访问插入和删除的

虚拟表,以选择要返回的数据。

其中删除虚拟表(Deleted)存储原来的数据、插入虚拟表(Inserted)存储了更新后

或新插入的数据。使用output子句能够选择这些表中的所有列或指定列。

一、返回插入的数据

命令Insert使插入虚拟表Inserted表可用。

如:

  1. insert into bumen(bmname)  
  2.   
  3. output inserted.*  
  4.   
  5.  values('新部门')  
insert into bumen(bmname)

output inserted.*

 values('新部门')

结果:

id bmname isdelete

11 新部门 0

二、返回更新前和更新后的数据

如:

  1. update bumen set bmname='另外一个新部门'   
  2.   
  3. output deleted.bmname as 原来的名称,inserted.bmname as 新名称  
  4.   
  5. where bmname='新部门'  
update bumen set bmname='另外一个新部门' 

output deleted.bmname as 原来的名称,inserted.bmname as 新名称

where bmname='新部门'

结果:

原来的名称 新名称

新部门 另外一个新部门

三、返回删除的数据

如:

  1. delete from bumen  
  2.   
  3. output deleted.id as 删除的部门编号,deleted.bmname as 删除的部门名称  
  4.   
  5. where bmname='另外一个新部门'  
delete from bumen

output deleted.id as 删除的部门编号,deleted.bmname as 删除的部门名称

where bmname='另外一个新部门'

结果:

删除的部门编号 删除的部门名称

11             另外一个新部门

四、将返回的数据存储到表变量中

基本语法:

output  ...

into  表变量

如:

  1. declare @returndatatable table  
  2.   
  3. (  
  4.   
  5. id int default 0,  
  6.   
  7. name varchar(50),  
  8.   
  9. isdelete int   
  10.   
  11. )  
  12.   
  13. insert into bumen(bmname)   
  14.   
  15. output inserted.* into @returndatatable  
  16.   
  17. values('新部门')  
  18.   
  19. select * from @returndatatable  
declare @returndatatable table

(

id int default 0,

name varchar(50),

isdelete int 

)

insert into bumen(bmname) 

output inserted.* into @returndatatable

values('新部门')

select * from @returndatatable


结果:

id name isdelete

14 新部门 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值