2012-04-04 33 views
1

我正在使用SQL,而且我似乎无法弄清楚我的生活。使用连接语句从表中分配一个局部变量

我的存储过程中有一个局部变量@curType。我有两张桌子,DTXR和DP。 DP包含列typeprogramID。 DTXR包含列programIDQEI。存储过程通过QEI,我需要从表DP获取type,并将其分配给本地变量@curType

所以,我现在有

select @curType = [Type] From DP d 
     Join DTXR x on d.ProgramId = x.ProgramID 
     where x.QEI = @p_QEI. 

@p_QEI是传递到存储过程中的变量。

我正在运行的问题是这似乎没有设置@curType。它工作,如果我手动设置这样的程序ID:

select @curType = [Type] from DP Where DP.ProgramId = 120 

但是,联合声明似乎是将@curType设置为null。

+0

您确定只有一个记录最小DP与dtxr上的记录相匹配吗?我相信@curType的价值将成为它遇到的第一个记录,这可能不是您期望的记录。 – 2012-04-04 18:30:54

回答

2

其实,这应该工作。我会检查,以确保以下甚至返回的所有东西(如果确实如此,什么是第一个结果回来?):

select [Type] From DP d 
    Join DTXR x on d.ProgramId = x.ProgramID 
    where dtxr.QEI = @p_QEI 

这应该是问题,因为here is a fiddle proving that a join does nothing different

+0

这是我检查的第一件事情之一,我得到了我期望的。数据在那里。 select语句起作用。但将其分配给本地变量似乎不太好。 – CurtisHx 2012-04-04 18:34:25

+1

@CurtisHx我刚刚用SQLFiddle更新了我的答案,证明它必须是数据。一个连接不会搞乱设置一个变量.... – 2012-04-04 18:39:33

+0

你说得对。它没有。回到绘图板。 – CurtisHx 2012-04-04 18:53:57

0

我m不知道你的代码是否应该工作,因为WHERE子句。 IMO行:

where dtxr.QEI = @p_QEI 

应该是这样的:

where x.QEI = @p_QEI 

我的第二个提示,请@p_QEI变量,它包含正确的价值?

+0

哎呀。这将是一个错字。 – CurtisHx 2012-04-04 19:17:51