我收到一個錯誤:動態SQL未進行轉換VARCHAR到INT(不應該反正)
Conversion failed when converting the varchar value 'INSERT INTO TableRowCount (IntFieldID, DecimalField) SELECT 'to data type 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'
動態SQL,沒有工作開始,我嘗試用三個'''
周圍的一切(didnt的工作),並在這我在網上看了幾個地方,反應建議把該變量的字符串,這產生了錯誤:
Must declare scalar variable @start
(沒有意外,因爲這聽起來不正確)。
廠,但是這個邏輯逃避了我。我必須將它轉換爲'NVARCHAR'才能讀取,即使它應該是'INT'?對不起,剛看到更新。 – Question3CPO
您將它轉換爲字符串,因爲您將它連接到要執行的SQL字符串中。 – JNK
原因是你試圖使它成爲nvarchar變量的一部分。如果你將一個字符串聯合到一個int中,SQl服務器將試圖轉換爲int數據類型,當然這些字符串數據通常不能轉換。 – HLGEM