5
我正在做我的存儲過程中的合併聲明。我需要在更新和插入過程中對行進行計數。如果我使用一個公共變量來獲取更新的行(對於更新和插入),我可以不同,這是從更新中得到的計數,這是我從插入得到的計數。請給我一個更好的辦法SQL Server合併聲明
我正在做我的存儲過程中的合併聲明。我需要在更新和插入過程中對行進行計數。如果我使用一個公共變量來獲取更新的行(對於更新和插入),我可以不同,這是從更新中得到的計數,這是我從插入得到的計數。請給我一個更好的辦法SQL Server合併聲明
您可以創建一個表變量來保存動作類型,然後OUTPUT
僞$action
列到它。
例
/*Table to use as Merge Target*/
DECLARE @A TABLE (
[id] [int] NOT NULL PRIMARY KEY CLUSTERED,
[C] [varchar](200) NOT NULL)
/*Insert some initial data to be updated*/
INSERT INTO @A
SELECT 1, 'A' UNION ALL SELECT 2, 'B'
/*Table to hold actions*/
DECLARE @Actions TABLE(act CHAR(6))
/*Do the Merge*/
MERGE @A AS target
USING (VALUES (1, '@a'),(2, '@b'),(3, 'C'),(4, 'D'),(5, 'E')) AS source (id, C)
ON (target.id = source.id)
WHEN MATCHED THEN
UPDATE SET C = source.C
WHEN NOT MATCHED THEN
INSERT (id, C)
VALUES (source.id, source.C)
OUTPUT $action INTO @Actions;
/*Check the result*/
SELECT act, COUNT(*) AS Cnt
FROM @Actions
GROUP BY act
返回
act Cnt
------ -----------
INSERT 3
UPDATE 2
什麼樣的數據可以存儲到行爲列..也就是說,如果我想知道有多少行被插入,我需要查詢表的一些約束對,因爲我需要知道wat數據可以插入行爲列插入時發生?以及更新何時發生? – 2011-02-28 14:23:47
'select @ l_ins_row =來自@action的COUNT(*)其中act ='插入'' – 2011-02-28 14:25:54
像我需要得到每個操作的計數 – 2011-02-28 14:26:14