1

一度別の動作をするために WHERE 句が必要な状況に直面し、解決方法がわかりません。

SELECT ...
FROM ...
WHERE

      (
      CASE @test
      WHEN 0
        THEN
          pid = inPID
      WHEN 1
        THEN
          id = inPID
          @test := 0    <- syntax error
      END
    )

@test 変数 (プロシージャー・パラメーターによって初期化される) を定義しようとしましたが、プロシージャーが TEST=1 で呼び出された場合、id=inPID が 1 回だけ必要です。これは可能ですか?

4

2 に答える 2

1

これを試してもらえますか?ただし、クエリ ステートメント全体を表示していただければ幸いです。では、 SQL Server でCASE THEN使用できますが、とにかくこれをテストしてください。:-ANDOR

SELECT ...
FROM ...
WHERE

      (
      CASE WHEN @test = 0 THEN pid = inPID
           WHEN @test= 1 THEN id = inPID AND @test:=0
      END
    )
于 2013-02-03T13:16:32.747 に答える
1

そのようにしてみてください

  @test =  @test - 1
   -- this just to be @test is 0 , if you have other value change  it be 0 

編集:

これを試して

  (
  CASE @test
  WHEN 0
    THEN
      pid = inPID
  WHEN 1
    THEN
      id = inPID
  WHEN 1
    THEN
      @test := 0    
  END

またはこれを使用します

  WHEN 1
THEN
  id = inPID AND  @test := 0
于 2013-02-03T13:01:52.530 に答える