@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
并产生错误。
原文由 bill 发布,翻译遵循 CC BY-SA 4.0 许可协议
您不能将 int 连接到字符串。代替:
你需要:
为了帮助说明这里发生了什么。假设@RowTo = 5。
为了将它构建成一个字符串(即使最终它将是一个数字),我需要将它转换。但是正如你所看到的,该数字在执行时仍然被视为一个数字。答案是25,对吧?
在您的情况下,您可以使用适当的参数化而不是使用连接,如果您养成这种习惯,您将在某些时候将自己暴露在 SQL 注入中(请参阅 this 和 this :