Sql 我收到一个使用整数作为参数的错误
/* 我在SQL存储过程中传递一个整数作为参数,但尽管声明了输入值,但仍收到一个错误 目的是在WHILE循环中使用传递给动态SQL中的参数的值 当通过参数将字符串值传递给动态SQL时,此方法工作正常,但如果是整数值,则返回一个错误,说明: 味精137,15级,状态2,第16行 必须声明标量变量“@BUILDING_ID” 下面是我正在使用的实际代码: */Sql 我收到一个使用整数作为参数的错误,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,/* 我在SQL存储过程中传递一个整数作为参数,但尽管声明了输入值,但仍收到一个错误 目的是在WHILE循环中使用传递给动态SQL中的参数的值 当通过参数将字符串值传递给动态SQL时,此方法工作正常,但如果是整数值,则返回一个错误,说明: 味精137,15级,状态2,第16行 必须声明标量变量“@BUILDING_ID” 下面是我正在使用的实际代码: */ 创建或更改程序dbo.USP\u历史建筑 @建筑物内部 像 声明@quarterStart int=2 声明@quarterEnd int=
创建或更改程序dbo.USP\u历史建筑
@建筑物内部
像
声明@quarterStart int=2
声明@quarterEnd int=1
声明@yearStart int=17
声明@yearEnd int=19
声明@BUILDING_ID int
声明@year int
声明@quarter int
声明@quarterForDbName nvarchar(4)
声明@sqlStatement-nvarchar(最大值)
设置@year=@yearStart
设置为@quarter=@quarterStart
SET@sqlStatement=''
设置@BUILDING_ID=@BUILDING
而@year代替
'WHERE PA.BUILDING_ID = @BUILDING_ID'
你需要
'WHERE PA.BUILDING_ID =' + @BUILDING_ID
您还可以使用如下参数
@BUILDING\u ID因为它是一个变量,所以应该在引号的另一边。你从哪里得到这个错误的?你能给我们看一下PRINT@sqlStatement
@Cinneach的结果吗。这看起来像SQL Server代码,所以我添加了标记。你应该用你实际使用的数据库来标记你的问题。我还建议你问另一个问题。解释如何处理样本数据和期望的结果。WHILE
循环不是最好的方法。
'WHERE PA.BUILDING_ID =' + @BUILDING_ID
EXECUTE ('SELECT ProductID, Name
FROM AdventureWorks2012.Production.Product
WHERE ProductID = ? ', 952) AT SeattleSales;
GO
'WHERE PA.BUILDING_ID =' + @BUILDING_ID