Sql Server OUTPUT新用法
以前只用过在存储过程中,
如
Create PROCEDURE [dbo].[GetMemoIDForSP]
(@SCString NVARCHAR(255),
@ReturnMemoid varchar(20) Output
)
AS
最近突然发现一个新的用法,和大家一起分享:
数据库Test 表A(SN INT,Title Varchar(50),DeleteFlag INT )
SELECT * FROM DBO.A
SN Title Deleteflag
1 a 0
2 b 0
3 c 0
1.当插入新的记录时:
Insert INTO A (Title,Deleteflag)
OUTPUT inserted.*
VALUES('d',0)
他会返回插入的记录
SN Title Deleteflag
4 d 0
这样在返回数据的时候就不用在写一个Select
2.同理,在修改的时候
Update A SET Title='dd'
OUTPUT inserted.*
WHERE SN=4
这样会返回最新的(修改后)记录
3.删除
DELETE A
OUTPUT deleted.*
WHERE SN=4
这样会返回删除钱的数据 用途,应该是可以在处理删除时记录是谁删除的,
4.返回的数据保存到临时表里
declare @A Table
(SN int ,Title Varchar(50),DeleteFlag int )
Insert INTO A (Title,Deleteflag)
OUTPUT inserted.SN,inserted.Title,inserted.Deleteflag
Into @A
VALUES('d',0)
SELECT * FROM @A
我在思考,Update也应该对应有个修改的关键字,应该可以返回修改之前的数据,但是没有发现,如果哪位兄弟发现的记得告诉我啊