Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我收到一个使用整数作为参数的错误_Sql_Sql Server_Stored Procedures - Fatal编程技术网

Sql 我收到一个使用整数作为参数的错误

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=

/* 我在SQL存储过程中传递一个整数作为参数,但尽管声明了输入值,但仍收到一个错误

目的是在WHILE循环中使用传递给动态SQL中的参数的值

当通过参数将字符串值传递给动态SQL时,此方法工作正常,但如果是整数值,则返回一个错误,说明:

味精137,15级,状态2,第16行 必须声明标量变量“@BUILDING_ID”

下面是我正在使用的实际代码:

*/
创建或更改程序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