Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用join语句从表中赋值局部变量_Sql_Sql Server 2008_Stored Procedures_Join - Fatal编程技术网

Sql 使用join语句从表中赋值局部变量

Sql 使用join语句从表中赋值局部变量,sql,sql-server-2008,stored-procedures,join,Sql,Sql Server 2008,Stored Procedures,Join,我在使用SQL,但我似乎一辈子都搞不懂这一点 我的存储过程中有一个名为@curType的局部变量。我有两张桌子,DTXR和DP。DP包含列type和programID。DTXR包含列programID和QEI。存储过程被传递给QEI,我需要从表DP中获取类型,并将其分配给局部变量@curType 所以我现在有 select @curType = [Type] From DP d Join DTXR x on d.ProgramId = x.ProgramID whe

我在使用SQL,但我似乎一辈子都搞不懂这一点

我的存储过程中有一个名为
@curType
的局部变量。我有两张桌子,DTXR和DP。DP包含列
type
programID
。DTXR包含列
programID
QEI
。存储过程被传递给
QEI
,我需要从表DP中获取
类型
,并将其分配给局部变量
@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

实际上,这应该行得通。我会检查以确保以下内容甚至返回任何内容(如果返回,第一个返回的结果是什么?):


这应该是问题所在,因为
WHERE
子句,我不确定您的代码是否有效。国际海事组织热线:

   where dtxr.QEI = @p_QEI
应该是这样的:

   where x.QEI = @p_QEI

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

您确定只有一条记录的最小DP与dtxr上的记录匹配吗?我相信@curType的值将是它遇到的第一条记录,这可能不是您所期望的记录。这是我检查的第一件事,我得到了我所期望的。数据就在那里。select语句有效。但是把它赋给局部变量似乎不太好。@CurtisHx我刚刚用一个SQLFiddle更新了我的答案,证明它一定是数据。一个连接并没有搞乱变量的设置……哇。我觉得自己像个白痴。我正在向存储过程传递坏数据。唉。我花了6个小时试图找出问题所在,但我的应用程序出现了问题。我现在要哭了。
   where x.QEI = @p_QEI