2012-12-17 75 views
0

我有一個合併語句,如果它存在,我想輸出「id」字段。目前,我有一個聲明,輸出任何id被更新或刪除,但如果沒有名爲id的列,這會中斷。有沒有辦法給merge語句添加一個條件?以下是合併語句(忽略源數據值作爲它們只是佔位符):有條件地將Output子句添加到合併語句

MERGE PACWARE.DHS.SVDDME WITH (HOLDLOCK) as target 
USING (VALUES(<code>,<address1>,'',<city>,<state>,<zip>,0x414c414e205348414c4f534b59)) AS source 
([CODE_],[TEMPADD1],[TEMPADD2],[TEMPCITY],[TEMPSTATE],[TEMPZIP],[ATTENTION]) 
ON target.CODE_ = source.CODE_ 
WHEN MATCHED THEN 
UPDATE 
SET 
target.[CODE_] = source.[CODE_],target.[TEMPADD1] = source.[TEMPADD1],target.[TEMPADD2] = source.[TEMPADD2],target.[TEMPCITY] = source.[TEMPCITY],target.[TEMPSTATE] = source.[TEMPSTATE],target.[TEMPZIP] = source.[TEMPZIP],target.[ATTENTION] = source.[ATTENTION] 
WHEN NOT MATCHED THEN 
INSERT([CODE_],[TEMPADD1],[TEMPADD2],[TEMPCITY],[TEMPSTATE],[TEMPZIP],[ATTENTION]) 
values(source.[CODE_],source.[TEMPADD1],source.[TEMPADD2],source.[TEMPCITY],source.[TEMPSTATE],source.[TEMPZIP],source.[ATTENTION]) 
OUTPUT INSERTED.id; 
+1

這將需要一定量的動態SQL,因爲沒有太多的可感知的好處 – RichardTheKiwi

+0

感謝您的答案理查德,我只是要強制用戶通過他們想要返回的列而不是試圖獲得一個ID。 – Mike

回答

0

我已決定在應用層來處理這個(通過有條件地將輸出線到功能)。這比試圖找到一個識別列並輸出更簡單。用戶只需傳遞他們想要返回的字段。