我有一個* 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'值有一個可疑的星星。 – 2014-10-09 22:24:53
錯誤是:消息137,級別15,狀態2,行1 必須聲明標量變量「@originalValue」和可疑星是數學運算符 - 乘法:) – Milan 2014-10-09 22:39:27
Doh!不知道我怎麼會誤解爲一個錯誤:)你需要一個參數列表定義。不過,我忘了該怎麼做。谷歌爲例。 – 2014-10-09 22:41:43