Динамический 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
(Не удивительно, что это незвучит правильно).