MSSQL2005 INSERT ,UPDATE,DELETE 之OUTPUT子句

王朝学院·作者佚名  2009-10-09
窄屏简体版  字體: |||超大  

-->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导入数据的操作得到了极大的简化。

*/

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航