SQL 2005使用OUTPUT子句捕获数据插入时的标识值
2008-10-30 10:09:09 来源:WEB开发网 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导入数据的操作得到了极大的简化。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››使用linux中的quota教程
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››使用jxl生成带动态折线图的excel
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
更多精彩
赞助商链接