Как насчет использования нескольких ПЧ?
CREATE PROCEDURE UpdateUserField
(
@UserFieldNumber int,
@UserFieldNewValue int
) AS
IF @UserFieldNumber=1
BEGIN
UPDATE MyTable SET UserField1 = @UserFieldNewValue
END
IF @UserFieldNumber=2
BEGIN
UPDATE MyTable SET UserField2 = @UserFieldNewValue
END
В качестве альтернативы вы можете построить динамический SQL в exec
CREATE PROCEDURE UpdateUserField
(
@UserFieldNumber int,
@UserFieldNewValue int
) AS
EXEC('UPDATE MyTable SET UserField' + CONVERT(varchar(10), @UserFieldNumber) + ' = ' + CONVERT(varchar(10), @UserFieldNewValue))
Остерегайтесь SQL-инъекций, если вы делаете это, хотя с целыми числами у вас не возникнет проблем, все остальное вам может понадобиться, чтобы учитывать риски.