All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
在c#中Windows窗体概述
asp.net常用正则表达式大全_[Asp.Net教程]
visual c++中的构造函数与析构函数
ASP.net,实现在线统计人数_[Asp.Net教程]
在.net中创建使用全球唯一标识符_[Asp.Net教程]
SQL Server定时作业的设置方法_[SQL Server教程]
php——array,数组学习整理_php资料_编程技术
调用VS数据源实现数据库连接字符串配置_.net资料_编程技术
用ASP.Net实现文件的在线压缩和解压缩_[Asp.Net教程]
SQL,Server,2005数据库开发概述(3)_[SQL,Server教程]
Reading number is top 10 pictures
The hot big eye big breast beauty2
A man's favorite things10
小学生考试又现神作--还有外国的
A man's favorite things3--ZhouWeiTong
mythology hero1
A beautiful girl to bud3
初吻给了谁?
Rendez-vous Sleep with actress, three days to earn 600000
2012 national geographic daily picture8
什么叫国家
Download software ranking
Ashlynn Video1
Sora aoi's film--cangkong_Blue.Sky
Ashlynn Video3
Detective task-the top secret prostitution files
Boxer's Top ten classic battle8
Unix video tutorial3
Sora aoi, the nurse, uniform ,nursing assistant
Boxer vs Yellow4
Tram sex maniac 2 (H) rar bag16
Visual C++界面编程技术
归海一刀 published in(发表于) 2014/2/1 0:09:59 Edit(编辑)
sql,server,2005中的output子句_[SQL,Server教程]

sql,server,2005中的output子句_[SQL,Server教程]

sql server 2005中的output子句_[SQL Server教程]

今天看了下sql server 2005中的output子句,以使您可以从修改语句(INSERT、UPDATE、DELETE)中将数据返回到表变量中。带结果的 DML 的有用方案包括清除和存档、消息处理应用程序以及其他方案。这一新的 OUTPUT 子句的语法为:
OUTPUT INTO @table_variable


可以通过引用插入的表和删除的表来访问被修改的行的旧/新映像,其方式与访问触发器类似。在 INSERT 语句中,只能访问插入的表。在 DELETE 语句中,只能访问删除的表。在 UPDATE 语句中,可以访问插入的表和删除的表。下面选用MSDN的例子介绍之:


作为带结果的 DML 可能有用的清除和存档方案的示例,假设您具有一个大型的 Orders 表,并且您希望定期清除历史数据。您还希望将清除的数据复制到一个名为 OrdersArchive 的存档表中。您声明了一个名为 @DeletedOrders 的表变量,并且进入一个循环,在该循环中,您使用上文中的“TOP 增强功能”一节中描述的清除方法,成块地删除了历史数据(比如,早于 2003 年的定单)。这里增加的代码是 OUTPUT 子句,它将所有被删除的行的所有属性复制到 @DeletedOrders 表变量中,然后,使用 INSERT INTO 语句将该表变量中的所有行复制到 OrdersArchive 表中:


DECLARE @DeletedOrders TABLE
(
orderid INT,
orderdate DATETIME,
empid INT,
custid VARCHAR(5),
qty INT
)
WHILE 1=1
BEGIN
BEGIN TRAN
DELETE TOP(5000) FROM Orders
OUTPUT deleted.* INTO @DeletedOrders
WHERE orderdate < '20030101'
INSERT INTO OrdersArchive
SELECT * FROM @DeletedOrders
COMMIT TRAN
DELETE FROM @DeletedOrders
IF @@rowcount < 5000
BREAK
END


再举一个例子如下,假如有表如下Create table Employee(EmpID int identity(1, 1) constraint Employee_pk primary key, FirstName varchar(100), LastName Varchar(100), Sex char(1), Salutation as case when Sex ='M' then 'Mr.' when Sex ='F' then 'Ms.' else '' end, Salary Money, Deductions as case When Salary <3000 then .20 * Salarywhen Salary between 30000 and 50000 then .26*Salary when Salary between 50001 and 75000 then .30*Salaryelse .35*Salary end, DOJ datetime constraint DOJ_DEF default getdate())
} 很容易的一个表,其中用到了case子句,分别对Salutation ,deductions,doj等进行了设置。而我们可以再搞一个存储过程,如下:Create procedure employee_insert@Fname varchar(100),@Lname varchar(100),@sex char(1),@Salary Moneyasdeclare @empoutput table (EmpID int ,FirstName varchar(100), LastName Varchar(100),Sex char(1), Salutation char(3),Salary Money,Deductions Money,DOJ datetime )insert into Employee(FirstName,LastName,Salary,sex)OUTPUT inserted.* into @empoutputvalues(@Fname ,@Lname ,@Salary,@sex )Select * from @empoutput
然后在调用该存储过程时,可以这样来用USE [MyDatabase]
GOexec employee_insert 'Miho','Yoshikawa','F',146000


这样,将在执行的时候,将往employee表里插入数据,并且,将定义了一个临时的变量empoutput,注意哦,这个可以以表的形式定义的,这里很容易看的出来,并且,将插入到employee表的数据同时输出到这个empoutput变量中去.我们执行这个存储过程后,会发现如下结果
EmpID,FirstName,LastName,Sex,Salutation,Salary,Deductions,DOJ
7,Miho,Yoshikawa,F,Ms.,146000.00,51100.00,2006-04-09 23:16:44.920
,并且employee表中的确插入了记录

可以看到


出处:jackyrong BLOG







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.