Я использую SQL Server 2000 и имею странную проблему с блоком кода SQL (ниже):
Пользователь может ввести «GM» в качестве возможного параметра или «F». Если пользователь вводит «GM» в качестве параметра в сохраненной строке запроса процедуры, мне нужно, чтобы AutoDivision включал GMC, CAD, CHE, SAT
declare @AutoDivision as varchar(15)
set @AutoDivision = 'GM'
if @AutoDivision = 'GM'
Begin
Select @AutoDivision = '''Cad'', ''GMC'', ''Sat'', ''Che'''
End
SELECT
oh.OrderNumber, lg.[lgh_number]
FROM
[dbo].[OrderHeader] oh (NOLOCK)
INNER JOIN
[dbo].[DistrctHeader] lg (NOLOCK) ON oh.[inv_number] = lg.[inv_number]
INNER JOIN
[dbo].[DealerCompany] c (NOLOCK) ON c.cmp_id = LEFT(oh.[ordernumber],3)
INNER JOIN
[dbo].[divisionXREF] x (NOLOCK) ON x.Division = c.comp_revtype
WHERE
oh.ord_number = '113-889257'
AND x.AutoDivision IN (@AutoDivision)
--AND x.AutoDivision IN ('Cad', 'Sat', 'GMC', 'Che')
AND lg.[lgh_outstatus] IN ('AVAIL', 'PLAN', 'DISP', 'STRTD', 'PEND','COMP')
Однако, когда я запускаю приведенный ниже код, я не получаю никаких записей.
Когда я раскомментирую строку кода
--AND x.AutoDivision IN ('Cad', 'Sat', 'GMC', 'Che')
это работает (мне возвращают запись).
Когда я делаю print 'AND x.AutoDivision IN (' + cast(@AutoDivision as varchar) + ')'
Я вернусь AND x.AutoDivision IN ('Cad', 'GMC', 'Sat', 'Che')
Что мне здесь не хватает?