WEB开发网
开发学院数据库MSSQL Server SQL 2005使用OUTPUT子句捕获数据插入时的标识值 阅读

SQL 2005使用OUTPUT子句捕获数据插入时的标识值

 2008-10-30 10:09:09 来源:WEB开发网   
核心提示: DECLARE@InsertedRowsTABLE(ProductIDINT,ProductNumberNVARCHAR(25))INSERTProduct([Name],ProductNumber,ListPrice)OUTPUTinserted.ProductID,inserted.P

  DECLARE@InsertedRowsTABLE(ProductIDINT,ProductNumberNVARCHAR(25))
  INSERTProduct([Name],ProductNumber,ListPrice)
  OUTPUTinserted.ProductID,
  inserted.ProductNumber
  INTO@InsertedRows
  SELECT
  [Name],ProductNumber,ListPrice
  FROM
  ProductsToInsertASI
  WHERE
  NOTEXISTS(SELECT1FROMProduct
  WHEREProductNumber=I.ProductNumber)
  UPDATEProductsToInsert
  SETInsertedIdentityValue=T.ProductID
  FROMProductsToInsertI
  JOIN@InsertedRowsTONT.ProductNumber=I.ProductNumber
  SELECTRowID,ProductNumber,InsertedIdentityValue
  FROMProductsToInsert
  WHEREInsertedIdentityValueISNOTNULL

我们定义了一个表变量来存储OUTPUT子句的结果。我们使用OUTPUT into这个语法将结果存储到表变量中。

下一步我们使用表变量,根据插入的标识列更新源表。

最后,一个简单的SELECT语句返回新的数值,我们可以很容易地在其他语句中使用这些数值。

OUTPUT 子句对于在 INSERT操作之后检索标识列或计算列的值可能非常有用。另外OUTPUT子句也可以在UPDATE和DELETE语句中使用,从插入表或删除表中得到数值,并返回这些数值。如果将参数或变量作为 UPDATE 语句的一部分进行了修改,则 OUTPUT 子句将始终返回语句执行之前的参数或变量的值而不是已修改的值。

以下语句中不支持 OUTPUT 子句:

l 引用本地分区视图、分布式分区视图或远程表的 DML 语句。

l 包含 EXECUTE 语句的 INSERT 语句。

l 不能将 OUTPUT INTO 子句插入视图或行集函数。

简洁的OUTPUT子句,使得向SQL Server导入数据的操作得到了极大的简化。

上一页  1 2 3 

Tags:SQL 使用 OUTPUT

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接