我有以下存儲過程:另一個轉換轉換爲varchar值 'N' 爲int數據類型時失敗
CREATE PROCEDURE [cafgAddCoreID]
@HoldingName nvarchar (50) = null
@CountStart int = 0,
AS
DECLARE @sql nvarchar (50)
DECLARE @bit nvarchar (200)
BEGIN
SET @bit = 'MTR1- + CAST ((' + @CountStart + ' + ROW_NUMBER()
OVER (ORDER BY [FindNo])) AS NVARCHAR(10))'
SET @sql = 'INSERT INTO ' + @HoldingName + '([CoreID])
SELECT (' + @bit + ') FROM [DectectoristMetalFinds]'
EXEC @sql
END
但是當我運行:
EXEC [cafgAddCoreID] 'Table1', 9
我得到
當轉換varchar值'MTR1- + CAST(('到數據類型int。
運行
INSERT INTO [Table1] ([CoreID])
SELECT ('MTR1-' + CAST ((0 + ROW_NUMBER() OVER (ORDER BY FindNo))
AS NVARCHAR(10))) AS CoreID FROM [Table2]
的作品,所以我知道的方法是正確的,但顯然不是在存儲過程。
您是否在執行它之前調查過'@ sql'的值? – bendataclear 2013-03-25 17:07:16
您需要確保'MTR1-'被適當數量的撇號包圍。此外,heeeeello SQL注入攻擊。 – LittleBobbyTables 2013-03-25 17:08:22
問了這麼多次......轉換nvarchar值'SELECT \ * FROM'時轉換失敗的可能重複(http://stackoverflow.com/questions/7683353/conversion-failed-when-converting-the-nvarchar- value-select-from) – 2013-03-25 17:12:18