вы можете сделать это одним оператором, используя предложение OUTPUT :
DELETE [dbo].[PagePermission]
OUTPUT @MenuID,@PermissionID,Getdate(),@UserName
INTO [dbo].[MenuPermission]
WHERE [PortalID] = @PortalID AND [MenuID] = @MenuID
рабочий пример:
DECLARE @PagePermission TABLE (PortalID int, MenuID int)
INSERT INTO @PagePermission VALUES (1,1)
INSERT INTO @PagePermission VALUES (2,1)
INSERT INTO @PagePermission VALUES (3,2)
INSERT INTO @PagePermission VALUES (4,2)
DECLARE @MenuPermission TABLE (MenuID int, PermissionID int,YourDate datetime, UserName varchar(10))
DECLARE @MenuID int
,@PermissionID int
,@UserName varchar(10)
,@PortalID int
SELECT @MenuID =1
,@PermissionID =100
,@UserName ='xyz'
,@PortalID =2
DELETE @PagePermission
OUTPUT @MenuID,@PermissionID,Getdate(),@UserName
INTO @MenuPermission
WHERE PortalID = @PortalID AND MenuID = @MenuID
select * from @PagePermission
select * from @MenuPermission
ВЫВОД:
PortalID MenuID
----------- -----------
1 1
3 2
4 2
(3 row(s) affected)
MenuID PermissionID YourDate UserName
----------- ------------ ----------------------- ----------
1 100 2011-11-09 09:18:52.693 xyz
(1 row(s) affected)