Сделайте ваш параметр необязательным:
@month_1 NVARCHAR(max) = NULL
Обновлять только когда параметр не указан
month_1 = CASE WHEN @month_1 IS NULL THEN month_1 ELSE @month_1 END
Вот пример реализации:
CREATE PROC XemDiem_Update(@month_1 NVARCHAR(max) = NULL,
@month_2 NVARCHAR(max) = NULL,
@month_3 NVARCHAR(max) = NULL,
@month_4 NVARCHAR(max) = NULL,
@month_5 NVARCHAR(max) = NULL,
@month_6 NVARCHAR(max) = NULL,
@month_7 NVARCHAR(max) = NULL,
@month_8 NVARCHAR(max) = NULL,
@month_9 NVARCHAR(max) = NULL,
@month_10 NVARCHAR(max) = NULL,
@month_11 NVARCHAR(max) = NULL,
@month_12 NVARCHAR(max) = NULL,
@user_id INT)
AS
BEGIN
UPDATE Xemdiem
SET month_1 = CASE WHEN @month_1 IS NULL THEN month_1 ELSE @month_1 END,
month_2 = CASE WHEN @month_2 IS NULL THEN month_2 ELSE @month_2 END,
month_3 = CASE WHEN @month_3 IS NULL THEN month_3 ELSE @month_3 END,
month_4 = CASE WHEN @month_4 IS NULL THEN month_4 ELSE @month_4 END,
month_5 = CASE WHEN @month_5 IS NULL THEN month_5 ELSE @month_5 END,
month_6 = CASE WHEN @month_6 IS NULL THEN month_6 ELSE @month_6 END,
month_7 = CASE WHEN @month_7 IS NULL THEN month_7 ELSE @month_7 END,
month_8 = CASE WHEN @month_8 IS NULL THEN month_8 ELSE @month_8 END,
month_9 = CASE WHEN @month_9 IS NULL THEN month_9 ELSE @month_9 END,
month_10 = CASE WHEN @month_10 IS NULL THEN month_10 ELSE @month_10 END,
month_11 = CASE WHEN @month_11 IS NULL THEN month_11 ELSE @month_11 END,
month_12 = CASE WHEN @month_12 IS NULL THEN month_12 ELSE @month_12 END
WHERE user_id = @user_id
END