1

私はSQLを扱っていますが、一生これを理解することはできません。

というストアド プロシージャにローカル変数があります@curType。DTXR と DP の 2 つのテーブルがあります。DP には列typeとが含まれますprogramID。DTXR には列programIDとが含まれますQEI。ストアド プロシージャには が渡されます。テーブル DP からQEIを取得し、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 に設定しているようです。

4

2 に答える 2

2

実際、これはうまくいくはずです。以下が何かを返すかどうかを確認します (もしそうなら、最初に返される結果は何ですか?):

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

結合が何も変わらないことを証明するフィドルがあるので、それは問題になるはずです

于 2012-04-04T18:29:59.187 に答える
0

WHERE句のためにコードが機能するかどうかはわかりません。IMO ライン:

   where dtxr.QEI = @p_QEI

次のようになります。

   where x.QEI = @p_QEI

2 つ目のヒントは、@p_QEI変数を確認してください。適切な値が含まれているかどうかです。

于 2012-04-04T19:07:03.350 に答える