Динамический SQL не преобразует VARCHAR в INT (не должен в любом случае)

m получаю ошибку:

Преобразование не удалось при преобразовании значения varchar 'INSERT INTO TableRowCount (IntFieldID, DecimalField) SELECT 'к типу данных int "

Используя следующий код:

DECLARE @start INT -- @start is an INT
SET @start = 1 -- INT

DECLARE @sql NVARCHAR(MAX)
SET @sql = 'INSERT INTO TableRowCount (IntFieldID, DecimalField)
SELECT ' + @start +', COUNT(*)
FROM dbo.somewhere' -- location is irrelevant

EXECUTE(@sql) -- this is where it fails

Если я удалюIntFieldID и@start, он будет работать со вставкой (хотя это побеждает цель). Я'мы пробовали в том числеSELECT CAST(' + @start + ' AS INT), который кажется немного излишним, так как@start являетсяINT уже (кастингINT какINT), но это нетоже не работает. Я также пытался начать сN' DYNAMIC-SQLкоторый не сделалт, я пытался использовать три''' вокруг всего (не работать), и в нескольких местах, которые я читал в Интернете, ответы предлагали поместить переменную в строку, которая вызвала ошибку:

Должен объявить скалярную переменную @start

(Не удивительно, что это незвучит правильно).

Ответы на вопрос(2)

Ваш ответ на вопрос