我收到一个错误:
将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,没有工作,我尝试用三个'''
周围的一切(didnt的工作),并在这我在网上看了几个地方,反应建议把该变量在串,其生成错误:
必须声明标量变量@启动
(毫不奇怪,因为这不好听正确的)。