Sql 使用join语句从表中赋值局部变量
我在使用SQL,但我似乎一辈子都搞不懂这一点 我的存储过程中有一个名为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
@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