【Sql Server】ストアドでUpsert

MERGE INTOですね。メモです。
MERGE INTOが使えるのはSQL Server 2008以降だった気がします。

ALTER PROCEDURE [dbo].[Upsert]
	@Id int,
	@Data int,
AS
BEGIN
	BEGIN TRANSACTION;

	    SET NOCOUNT ON;
	
            MERGE INTO HogeTable AS A
            USING (SELECT @Id AS Id,@Data AS Data) AS B
            ON (A.Id = B.Id)
            WHEN MATCHED THEN
	        UPDATE SET Data = B.Data
	    WHEN NOT MATCHED THEN
                INSERT (Id,Data) VALUES(B.Id,B.Data);

	COMMIT TRANSACTION;
END