У меня есть столбец типа * NVARCHAR
, который содержит фрагменты инструкций SQL вместо окончательных значений. Так, например, один из полей имеет следующий фрагмент кода:Преобразование строки инструкции tSQL в конечное значение
CAST(@originalValue * -1 AS INT)
То, что я пытаюсь сделать, чтобы использовать эти фрагменты SQL для вставки в хранимой процедуре кода последнего на. Чтобы проверить функциональность, я создал следующий очень простой пример, чтобы установить целочисленное значение (5) и использовать приведенный выше фрагмент SQL в динамическом выражении SQL для инвертирования этого значения (5) в (-5).
DECLARE @originalValue AS INT = 5
DECLARE @fianalValue AS INT
DECLARE @sql AS NVARCHAR(50)
DECLARE @value AS NVARCHAR(50) = 'CAST(@originalValue * -1 AS INT)'
SET @sql = 'SELECT @fianalValue = '+CAST(@value AS NVARCHAR(100))+''
exec sp_executesql @sql, N'@fianalValue INT OUTPUT', @fianalValue = @fianalValue OUTPUT
PRINT '@fianalValue: ' + CAST(@fianalValue AS VARCHAR(50))
Однако, я получаю сообщение об ошибке. Я пробовал несколько разных подходов, но что-то не выстраивается. Спасибо за помощь.
Какая ошибка? У вас подозрительная звезда в вашем значении '@ value'. –
Ошибка: Msg 137, Level 15, State 2, Line 1 Должен объявить скалярную переменную «@originalValue», а подозрительная звезда - математический оператор - Умножение :) – Milan
Doh! Интересно, как я мог неправильно понять это как ошибку :) Вам нужен список параметров. Однако я забываю, как это сделать. Google для примера. –