Пишу процедурку, для того что бы выбирать только те строки, в которых поля Make и Model (и то и другое поле типа nvarchar(50)) содержат (IN) только те значения, что переданы в соответствующих параметрах @Make и @Model. Параметры @Make и @Model в свою очередь представляют из себя длинную строку с данными перечисленными через запятую. (если кто помнит или знает это в Reporting Services - типа мультипараметр, который я распарсиваю вот так: =join(Parameters!Make.Value,","), сам параметр тоже типа строки)
Например параметр @Model может быть таким: 'Golf, Passat, 406, SX400'
В моем примере я беру вообще лишь по одному значению и обхожусь без разделителей и передаю только одно значение в параметр:
DECLARE @HostID int,
@Make varchar(8000),
@Model varchar(8000),
@cases int
SET @HostID = 3
SET @Make = 'Volkswagen'
SET @Model = 'Golf'
SET @cases = 1
DECLARE @s nvarchar(1000)
SET ROWCOUNT @cases
SET @s = 'SELECT TLC.CaseID AS CaseID,
TLC.DateClosed AS Date_Committed,
TLV.FinalStlValue AS Settlement_Offer,
TLC.Mileage,
TLV.MileageAdj
FROM dbo.TL_Case AS TLC,
dbo.VehicleDetail VEH,
dbo.TL_VehicleValuation TLV
WHERE TLC.HostID = @HostID AND
TLC.CaseID = TLV.CaseID AND
TLC.VersionNo = TLV.VersionNo AND
TLC.VehicleDetailID = VEH.VehicleDetailID AND
VEH.Make IN ('+ @Make+ ') AND
VEH.Model IN ('+ @Model +')
ORDER BY TLC.DateFirstCreated DESC'
exec sp_executesql @s, N'@HostID int',
@HostID
SET ROWCOUNT 0
В итоге получаю злополучную ошибку, которую не знаю вообще как интрепретировать:
Server: Msg 207, Level 16, State 3, Line 1
Invalid column name 'Volkswagen'.
Server: Msg 207, Level 16, State 1, Line 1
Invalid column name 'Golf'.
Если кто-нибудь в знает в чем тут собака зарылась :) помогите пожалуйста!!