知识大全 SQL Server 2005数据库中的Output子句

Posted 变量

篇首语:少年击剑更吹箫,剑气箫心一例消。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SQL Server 2005数据库中的Output子句相关的知识,希望对你有一定的参考价值。

SQL Server 2005数据库中的Output子句  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  SQL Server 中的output子句 可以使你从修改语句(INSERT UPDATE DELETE)中将数据返回到表变量中 带结果的 DML 的有用方案包括清除和存档 消息处理应用程序以及其他方案 这一新的 OUTPUT 子句的语法为

  OUTPUT INTO @table_variable

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

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

  DECLARE @DeletedOrders TABLE  (   orderid INT    orderdate DATETIME    empid INT    custid VARCHAR( )    qty INT  )  WHILE =   BEGIN  BEGIN TRAN  DELETE TOP( ) FROM Orders  OUTPUT deleted * INTO @DeletedOrders  WHERE orderdate <   INSERT INTO OrdersArchive  SELECT * FROM @DeletedOrders  MIT TRAN  DELETE FROM @DeletedOrders  IF @@rowcount <   BREAK  END

  再举一个例子如下 假如有表如下

  Create table Employee(EmpID int identity( ) constraint Employee_pk primary key FirstName varchar( ) LastName Varchar( ) Sex char( ) Salutation as case when Sex = M then Mr when Sex = F then Ms else end Salary Money Deductions as case When Salary < then * Salarywhen Salary beeen and then *Salary when Salary beeen and then *Salaryelse *Salary end DOJ datetime constraint DOJ_DEF default getdate())

  很容易的一个表 其中用到了case子句 分别对Salutation deductions doj等进行了设置 而我们可以再搞一个存储过程 如下

  Create procedure employee_insert@Fname varchar( ) @Lname varchar( ) @sex char( ) @Salary Moneyasdeclare @empoutput table (EmpID int FirstName varchar( ) LastName Varchar( ) Sex char( ) Salutation char( ) 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

  这样 将在执行的时候 将往employee表里插入数据 并且 将定义了一个临时的变量empoutput 注意哦 这个可以以表的形式定义的 这里很容易看的出来 并且 将插入到employee表的数据同时输出到这个empoutput变量中去 我们执行这个存储过程后 会发现如下结果

  EmpID FirstName LastName Sex Salutation Salary Deductions DOJ   Miho Yoshikawa F Ms : :    并且employee表中的确插入了记录  

  调用带有Output参数的存储过程 txt

  CREATE PROCEDURE SP_RealTimeDisplay  (   @FromEmp nvarchar( )    @FromDep nvarchar( )    @i nvarchar( ) output    @i nvarchar( ) output    @i nvarchar( ) output  )  AS  set nocount on

   公司批复  select @i =(Select count(FsignID) as Sum From T_MessageSignature Where FSignID=@FromEmp and FLastSignID= and FSignRemark is null)

   会签意见  select @i =(Select count(FsignID) as Sum From T_MessageSignature Where FSignID=@FromEmp and FLastSignID= and FSignRemark is null)

   考勤审批  select @i =(Select count(FKaoQinID) as Sum From T_KaoQin Where FDepID Like @FromDep and FCheckerID= )  GO

cha138/Article/program/SQLServer/201311/22419

相关参考

知识大全 Microsoft SQL Server 2005数据库镜像语句

MicrosoftSQLServer2005数据库镜像语句  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 SQL Server 2005 数据转换服务

SQLServer2005数据转换服务  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  简介  由

知识大全 在SQL Server 2005数据库中更改数据架构

在SQLServer2005数据库中更改数据架构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 SQL Server 2005数据转换服务常见设计问题

SQLServer2005数据转换服务常见设计问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 SQL Server2005的XML数据类型之基础篇[2]

SQLServer2005的XML数据类型之基础篇[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 SQL Server2005的XML数据类型之基础篇[4]

SQLServer2005的XML数据类型之基础篇[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 SQL Server2005的XML数据类型之基础篇[1]

SQLServer2005的XML数据类型之基础篇[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 SQL Server2005的XML数据类型之基础篇[3]

SQLServer2005的XML数据类型之基础篇[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 使用 SQL Server 2005中的 CLR 集成(2)

使用SQLServer2005中的CLR集成(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 使用 SQL Server 2005中的 CLR 集成(3)

使用SQLServer2005中的CLR集成(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!