【 tulaoshi.com - 编程语言 】
                             
                            代码如下:
--Title:Generating test data 
--Author:wufeng4552 
--Date :2009-10-07 15:16:26 
if object_id('ta')is not null drop table ta 
go 
create table ta(ID int identity,[name] varchar(10)) 
insert ta([name]) select 'a' union all 
select 'b' union all 
select 'c' union all 
select 'd' union all 
select 'e' union all 
select 'f' union all 
select 'g' 
if object_id('tb')is not null drop table tb 
go 
create table tb(ID int identity,[name] varchar(10)) 
insert tb([name]) select 'a' union all 
select 'b' union all 
select 'c' 
--INSERT 陳述式來使用 OUTPUT INTO 
insert tb output 
inserted.id, 
inserted.[name] 
select [name] 
from ta where not exists(select 1 from tb where [name]=ta.[name]) 
/* 
id name 
----------- ---------- 
4 d 
5 e 
6 f 
7 g 
*/ 
--刪除剛才插入的紀錄 
delete tb where [name]'c' 
--储存此结果集保存到一个表值变量中 
declare @t table(ID int,[name] varchar(10)) 
insert tb output 
inserted.id, 
inserted.[name]into @t 
select [name] from ta where not exists(select 1 from tb where [name]=ta.[name]) 
select * from @t 
/* 
ID name 
----------- ---------- 
8 d 
9 e 
10 f 
11 g 
(4 個資料列受到影響) 
*/ 
--DELETE 陳述式使用 OUTPUT 
delete tb output deleted.* where id=9 
/* 
ID name 
----------- ---------- 
9 e 
(1 個資料列受到影響) 
*/ 
-- UPDATE 陳述式使用 OUTPUT INTO 
update tb set [name]='test' output inserted.* where id=10 
/* 
ID name 
----------- ---------- 
10 test 
(1 個資料列受到影響) 
*/ 
/* 
OUTPUT 子句对于在 INSERT操作之后检索标识列或计算列的值可能非常有用。 
另外OUTPUT子句也可以在UPDATE和DELETE语句中使用,从插入表或删除表中得到数值,并返回这些数值。 
以下语句中不支持 OUTPUT 子句: 
l 引用本地分区视图、分布式分区视图或远程表的 DML 语句。 
l 包含 EXECUTE 语句的 INSERT 语句。 
l 不能将 OUTPUT INTO 子句插入视图或行集函数。 
简洁的OUTPUT子句,使得向SQL Server导入数据的操作得到了极大的简化。