1

私はさまざまな VB6 プロジェクトを維持しており、一部のクエリは "ELSE:" を持つサーバーに渡され、case ステートメントでコロンが使用されています。

コロンが何に使われているか誰か教えてくれませんか?SQL2005 以降ではエラーが発生しますが、SQL2000 では問題なく動作します。

コードから削除して再コンパイルしたいのですが、アプリケーション内の他の 10 個の機能が壊れてしまうのではないかと心配しています。

前もって感謝します...

4

3 に答える 3

4

これが取り引きです..誰かがあなたのコードでELSEキーワードをLABELとして使用しました。

コロンが後に続く TSQL の単語はラベルです。以下にサンプルを示します。

DECLARE @Count int
SET @Count = 0

ONE_MORE_TIME:
IF @Count <> 33
    PRINT ‘Hello World’
    SET @Count = @Count + 1
END

IF @Count <> GOTO ONE_MORE_TIME

あなたの場合、ラベルは「ELSE」かもしれません

DECLARE @Count int
SET @Count = 0

ELSE:
IF @Count < 33
    PRINT ‘Hello World’
    SET @Count = @Count + 1
END

IF @Count < 33 GOTO ELSE

このコードもひどくインデントされる気がします。私はほとんどそれにいくらかのお金を入れても構わないと思っています。

于 2010-06-16T18:55:24.263 に答える
0

それを削除して再コンパイルし、アプリケーションをテストして、どのような影響があるかを確認してみませんか?

于 2010-06-16T18:47:58.367 に答える
0

うーん、SQL2005 でエラーが発生しますか?

SQL サーバーでは、ELSE を case ステートメントで使用して、まだキャッチされていないものをすべてキャッチします (これは、他のすべてのケースで「失敗した」ものに関係します)。たとえば、価格データベースからいくつかのアイテムをリストし、それらをカスタムの「予算」テキスト列で分類したいとします。そのため、各アイテムの価格を見て、その「予算」値がどうあるべきかを設定します。

SELECT title, price,
        Budget = CASE price
         WHEN price > 20.00 THEN 'Expensive'
          WHEN price BETWEEN 10.00 AND 19.99 THEN 'Moderate'
          WHEN price < 10.00 THEN 'Inexpensive'
          ELSE 'Unknown'
        END,
FROM titles

ここでの ELSE は、実際には「高価」または「中程度」または「安価」に分類されなかったすべてのものをキャッチします。ここでこれらの ELSE を削除すると、クエリが台無しになります。

于 2010-06-16T18:49:04.543 に答える