错误在存储过程的执行
问题描述:
此查询引发错误:错误在存储过程的执行
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
答
请你用下面的查询尝试,谢谢
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
你不能加入字符串设置呼叫参数 – 2011-12-28 08:59:25
顺便说一句,这看起来是一个可怕的方式来解决这个问题(即传入的动态查询)。 – 2011-12-28 09:00:04
查看答案不要很快地说号码试着找到备用或解决方案 – 2011-12-28 10:10:14