seloba 发表于 2013-1-26 14:16:58

MSSQL2005 INSERT ,UPDATE,DELETE 之OUTPUT子句

-->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, varchar(10))
insert ta() 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, varchar(10))
insert tb() select 'a' union all
select 'b' union all
select 'c'
--INSERT 陳述式來使用OUTPUT INTO
insert tb output
inserted.id,
inserted.
select
from ta where not exists(select 1 from tb where =ta.)
/*
id name
----------- ----------
4 d
5 e
6 f
7 g
*/
--刪除剛才插入的紀錄
delete tb where >'c'
--储存此结 ªG集保存到一个 ªí值变 ¶q中
declare @t table(ID int, varchar(10))
insert tb output
inserted.id,
inserted.into @t
select from ta where not exists(select 1 from tb where =ta.)
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 ='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导入数据的操作得到了极大的简化。
*/
页: [1]
查看完整版本: MSSQL2005 INSERT ,UPDATE,DELETE 之OUTPUT子句