错误在存储过程的执行

错误在存储过程的执行

问题描述:

此查询引发错误:错误在存储过程的执行

DECLARE @CategoryId int 
SELECT @CategoryId = 1 

exec [USP_GetLimitedRecords] 
     @Query = N'SELECT b.* FROM Boxes b INNER JOIN Categories c ON b.CategoryId = c.Id WHERE c.Id= ' + @CategoryId, 
     @PrimaryKey = N'id', 
     @PageNo = 1, 
     @PageSize = 20 

错误是:

Msg 102, Level 15, State 1, Line 2 Incorrect syntax near '+'.

此查询的工作

exec [USP_GetLimitedRecords] 
     @Query = N'SELECT b.* FROM Boxes b INNER JOIN Categories c ON b.CategoryId = c.Id WHERE c.Id= 1', 
     @PrimaryKey = N'id', 
     @PageNo = 1, 
     @PageSize = 20 
+2

你不能加入字符串设置呼叫参数 – 2011-12-28 08:59:25

+3

顺便说一句,这看起来是一个可怕的方式来解决这个问题(即传入的动态查询)。 – 2011-12-28 09:00:04

+0

查看答案不要很快地说号码试着找到备用或解决方案 – 2011-12-28 10:10:14

请你用下面的查询尝试,谢谢

DECLARE @CategoryId int 
DECLARE @MyQuery NVARCHAR(250) 
SELECT @CategoryId = 1 

SET @MyQuery = N'SELECT b.* FROM Boxes b INNER JOIN Categories c ON b.CategoryId = c.Id WHERE c.Id= ' + CAST(@CategoryId AS VARCHAR) 

exec [USP_GetLimitedRecords] 
     @Query = @MyQuery, 
     @PrimaryKey = N'id', 
     @PageNo = 1, 
     @PageSize = 20