मैं सीखने की कोशिश कर रहा हूं कि एमईआरईजी ऑपरेटर का उपयोग कैसे करें। निम्नलिखित कोड सही तरीके से संकलित:SQL सर्वर में विलय कैसे डिबग करें?
ALTER PROCEDURE moto.procPM_UpdateLines
@LineId As Int = null,
@LineName As Varchar(100),
@DeleteMe As Bit = 0
AS
BEGIN
MERGE moto.tblPMLine AS line
USING (SELECT LineId, LineName FROM moto.tblPMLine) AS existsLine
ON line.LineId = existsLine.LineId
WHEN MATCHED AND @DeleteMe = 1 THEN DELETE
WHEN MATCHED AND @DeleteMe = 0 THEN UPDATE SET line.LineName = @LineName
WHEN NOT MATCHED THEN INSERT(LineName) VALUES(@LineName);
END
GO
यह एक बहुत ही सरल प्रक्रिया है, मुझे पता है, लेकिन किसी कारण से यह किसी भी प्रविष्टियों उत्पन्न करने के लिए जब मैं निम्न आदेश का उपयोग नहीं लगता है।
execute moto.procPM_UpdateLines null, 'First test', 0
क्या यह जानने का कोई तरीका है कि यह किस विकल्प का पालन कर रहा है, अगर बिल्कुल?
पिछली संग्रहीत प्रक्रिया तय की गई।
MERGE INTO moto.tblPMLine AS T
USING (SELECT @LineId as LineId, @LineName as LineName) AS S
ON T.LineId = S.LineId
WHEN MATCHED AND @DeleteMe = 0 THEN --UPDATE
UPDATE SET LineName = @LineName
WHEN MATCHED AND @DeleteMe = 1 THEN --DELETE
DELETE
WHEN NOT MATCHED THEN--INSERT
INSERT (LineName) VALUES (@LineName)
OUTPUT $action AS ChangesMade;
अब यह आवेषण, अद्यतन और हटा देता है, साथ ही साथ आउटपुट लौटाता है।
क्या मेरा उत्तर सुझाव नहीं है कि आपने '@ LineID' चर का उपयोग नहीं किया है? :) – shahkalpesh
हाँ यह करता है, क्षमा करें। –