Используйте параметры для значений, где вы можете (т.е. не идентификаторы):
DECLARE @table nvarchar (20);DECLARE @nameColumnID nvarchar (15);ОБЪЯВИТЬ @id nvarchar (9);ОБЪЯВИТЬ @homeNumber int;DECLARE @sql nvarchar (max);
IF (@homeNumber <> 0)
BEGIN
SET @sql = 'UPDATE ' + @table + ' SET homeNumber = @homeNumber WHERE ' + @nameColumnID + ' = @id';
EXEC sp_executesql @sql,
N'@homeNumber int, @id nvarchar(9)',
@homeNumber=@homeNumber, @id=@id;
END;
Вы также объявили @sql
целым числом.Вероятно, просто недосмотр.Однако, если homeNumber
предназначен для использования в качестве номера телефона, вам следует использовать строку.Номера телефонов могут начинаться с нуля.