При добавлении строк вместе в SQL Server необходимо преобразовывать нетекстовые типы (например, int
) в текстовый тип (например, varchar
):
set @sql = @sql + ' AND v.LocationId = ''' +
cast(@LocationId as varchar(10)) + '''';
-- ^^^^ have to cast ^^ make sure size is big enough
Обратите внимание, что динамическийSQL не должен быть необходим в первую очередь.Вы можете просто выполнить запрос напрямую с параметрами (я реализовал нулевые проверки с дополнительными or
условиями):
SELECT * FROM VW_MASTERVIEW v
WHERE (v.LocationId = @LocationId OR @LocationId is null)
AND (v.FirstUser = @userName OR v.Seconduser = @userName OR @userName is null)
AND (v.FirstVisitDate = @startDate OR @startDate is null)
AND (v.LastVisitDate = @endDate OR @endDate is null)
У меня может не быть логики для FirstUser
и SecondUser
-Я сделал обоснованное предположение из вашего неполного кода.
Надеюсь, это поможет!