Другой вариант - использовать параметризованный запрос. Это даже заставило бы вашу проблему уйти. Как это:
DECLARE @sql NVARCHAR(4000), @params NVARCHAR(4000)
SET @sql = 'UPDATE ' + @currTable + ' SET date_changed = @p0, prev_langstring = @p1, brief_descrip = @p2 WHERE id = @p3'
SET @params = '@p0 VARCHAR(20), @p1 VARCHAR(???), @p2 VARCHAR(???), @p3 NVARCHAR(10)'
DECLARE @sd VARCHAR(20), @sid NVARCHAR(10)
SET @sd = CONVERT(VARCHAR(20), @submiteDate1)
SET @sid = CAST(@ID AS NVARCHAR(10))
EXEC sp_executesql @sql, @params, @p0 = @sd, @p1 = @prev_langstring, @p2 = @brief_descrip, @p3 = @sid
Я не знаю тип данных @prev_langstring
и @brief_descrip
, следовательно, VARCHAR(???)
вы видите выше; замените его настоящим типом данных.
Вы можете прочитать о sp_executesql
здесь .