必须声明标量变量
`@RowFrom int'(行距)
`@RowTo int
都是存储过程的全局输入参数,由于我正在用T-SQL编译存储过程中的SQL查询,然后在存储过程的最后使用Exec(@sqlstatement)
来显示结果,当我试图在执行的@sqlstatement
变量中使用@RowFrom
或@RowTo
时,会出现这个错误。
"Must declare the scalar variable "@RowFrom"."
另外,我试着在"@sqlstatement "变量中包括以下内容。
'Declare @Rt int'
'SET @Rt = ' + @RowTo
但@RowTo
仍然没有将其值传递给@Rt
,并产生了一个错误。
70
3
你不能将一个int连接到一个字符串。而不是。
你需要。
为了帮助说明这里发生了什么。假设@RowTo = 5。
为了将其构建为一个字符串(即使最终它将是一个数字),我需要将其转换。但正如你所看到的,当它被执行时,这个数字仍然被当作一个数字处理。答案是25,对吗?
在你的案例中,你其实不需要在@sql字符串里面重新声明@Rt等,你只需要说。
尽管最好能有适当的参数化,比如说。
仅供参考,我知道这是个老帖子,但根据数据库的COLLATION设置,你可以在这样的语句中得到这个错误。
例如,如果你打错了S在
对不起,我已经把答案贴在这里了,但这是一个实际的错误报告实例。
还请注意,该错误不会在信息中显示大写的S,我不确定原因,但我认为这是因为
是在等号的左边。
大小写敏感度也会导致这个问题。
@MyVariable和@myvariable在SQL Server Man.Studio中是相同的变量,可以工作。然而,由于大小写敏感度的不同,这些变量在Visual Studio(C#)中会导致出现"必须声明标量变量"@MyVariable"。