2011-12-28 21 views
1

Этот запрос воспитывающей ошибку:Ошибка в хранимой процедуре

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

вы не можете присоединяться к строкам при настройке параметра вызова –

+3

Кстати, это выглядит ужасным способом решить эту проблему (т. динамический запрос прошел). –

+0

См. Ответ: не спешите говорить Нет. Попробуйте найти альтернативное решение –

ответ

3

могли бы вы попробовать с ниже запроса, спасибо

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 
Смежные вопросы