您当前位置:优侠库 > 资讯攻略 >
来源:未知
2019-10-17 03:56:09 浏览: 分类:资讯攻略

SQL Server 2005数据库中的Output子句

这篇论坛文章(CCID技术社区)主要介绍了sql server 2005中Output子句的使用。有关更多详细信息,请参考以下内容:

SQL Server 2005中的Output子句使您能够从修改后的语句(INSERT、UPDATE、DELETE)中将数据返回到表变量。具有结果的DML的有用方案包括清理和归档、消息处理应用程序和其他方案。这个新输出子句的语法是:

输出到@table_variable

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

作为清理和归档方案的一个例子,带有结果的DML可能是有用的,假设您有一个很大的Orders表,并希望定期清理历史数据。您还希望将清除的数据复制到名为OrdersArchive的存档表中。您声明了一个名为@DeletedOrders的表变量,并进入了一个循环,其中使用了上面的“。主要增强功能”第1节中描述的清理方法按块删除历史数据(例如,早于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
输出已删除。* INTO @ DeletedOrders
WHERE orderdate & lt;2003 01 01 '
INSERT INTO orders archive
SELECT * FROM @ deleted orders
COMMIT TRAN
DELETE FROM @ deleted orders
IF @ @ rowcount & lt;5000
BREAK
结束

另一个例子如下,如果有一个如下的表

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 & lt3000那么. 20 *薪水当薪水在30000和50000之间时那么. 26 *薪水当薪水在50001和75000之间时那么. 30 *薪水使用. 35 *薪水结束,DOJ日期时间约束DOJ_DEF默认getdate())

一个简单的表格,其中使用了case子句,以及称呼、扣除、doj等。分别设置。我们可以做另一个存储过程,如下所示:

创建过程Employee _ insert @ Fname Varchar(100),@Lname varchar(100),@sex char(1),@ Salary Money asdeclare @ EMP OUTPUT table(EmpID int,FirstName varchar(100),LastName Varchar(100),sex char(1),Salutation char(3),Salary Money,Deductions Money,DOJ日期时间)插入到Employee(FirstName,LastName,Salary,sex)中插入的输出。* into @empoutputvalues(@Fname,@Lname,@Salary,@sex )Select * from @empoutput

然后,在调用存储过程时,可以像这样使用[MyDatabase]。

GOexec雇员_插入'美穂','吉川',' F ',146000

这样,在执行过程中,数据将被插入到employee表中,并定义一个临时变量empoutput。注意这个变量可以用表格的形式定义,这里很容易看到,插入到employee表中的数据会同时输出到这个empoutput变量中。在我们执行这个存储过程之后,我们会发现以下结果

Empid,名字,姓氏,性别,称呼,薪水,扣除额,Doj
7,美穂,吉川,女,146000.00,51100.00,2006-04-09 23: 16: 44。

-

调用存储过程。带有输出参数的txt

CREATE PROCEDURE SP _ real time display
(
@ from EMP nvarchar(20),
@FromDep nvarchar(20),
@i1 nvarchar(20) output,
@i2 nvarchar(20) output,
@ i3 nvarchar(20)output
)
AS
set no count on

-公司批准

Select @ i1 =(Select count(FsignID)as sum 1 From T _ message signature其中FSignID=@FromEmp和FLastSignID = 1,FSignRemark为空)

-签署你的意见。

Select @ I2 =(Select count(FsignID)as sum 1 From T _ message signature其中FSignID=@FromEmp且FLastSignID = 0且FSignRemark为null)

-考勤审批

Select @ i3 =(Select count(fkao qid)as sum 1 From T _ Kao Qin Where FD epid Like @ From dep and FCheckerID = 0)
GO

-调用,先定义再输出。

DECLARE @ a nvarchar(20)
DECLARE @ b nvarchar(20)
DECLARE @ c nvarchar(20)
Execute SP _ real time display ' 106000003 ',' 012708% ',@a output,@b output,@c output
select @a as aa,@b as bb,@c as cc

关键词:SQL Server 2005,数据

优侠库网站每天提供最新最热门的安卓手机软件、游戏下载、分享热门手游资讯攻略教程、手机软件教程步骤,专注安卓手机游戏软件下载。

本文链接:http://www.123down.cn/gonglue/227334.html

攻略资讯
安卓软件
安卓游戏