使用join语句从表中分配局部变量

时间:2012-04-04 18:26:57

标签: sql sql-server-2008 stored-procedures join

我正在使用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

但是join语句似乎是将@curType设置为null。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

由于WHERE子句,我不确定您的代码是否可行。 IMO专线:

   where dtxr.QEI = @p_QEI

应如下所示:

   where x.QEI = @p_QEI

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