Как я уже говорил в своем комментарии, не вводите необработанные значения в ваши динамические операторы SQL.Это большая проблема с SQL-инъекцией, и нет никаких оснований когда-либо это делать.
Я подозреваю, что вы используете varchar
, и комбинация использования непараметрического оператора вызывает проблему.Если это не решает проблему, вам нужно предоставить пример, который повторяет проблему (обратите внимание на предполагаемые типы данных):
DECLARE @table_name sysname,
@textcol sysname,
@newtext nvarchar(50), --Guessed datatype
@id_col sysname,
@cur_id int; --Guessed dataytpe
DECLARE @updstatement nvarchar(MAX);
SET @updstatement = 'UPDATE ' + QUOTENAME(@table_name) + N' SET ' + QUOTENAME(@text_col) + N' = @newtext WHERE ' + QUOTENAME(@id_col) + N' = @cur_id;';
PRINT @updstatement; --Your debugging friend
EXEC sp_executesql @SQL, N'@newtext nvarchar(50), @cur_id int', @newtext = @newtext, @cur_id = @cur_id;