【发布时间】:2010-12-15 21:21:20
【问题描述】:
我使用的是 SQL Server 2000,但遇到一个奇怪的 SQL 代码块问题(如下):
用户可以输入“GM”作为可能的参数或“F”。如果用户在存储的 proc 查询字符串中输入“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')
我在这里错过了什么?
【问题讨论】:
标签: sql sql-server tsql sql-server-2000 subquery