私はさまざまな VB6 プロジェクトを維持しており、一部のクエリは "ELSE:" を持つサーバーに渡され、case ステートメントでコロンが使用されています。
コロンが何に使われているか誰か教えてくれませんか?SQL2005 以降ではエラーが発生しますが、SQL2000 では問題なく動作します。
コードから削除して再コンパイルしたいのですが、アプリケーション内の他の 10 個の機能が壊れてしまうのではないかと心配しています。
前もって感謝します...
私はさまざまな VB6 プロジェクトを維持しており、一部のクエリは "ELSE:" を持つサーバーに渡され、case ステートメントでコロンが使用されています。
コロンが何に使われているか誰か教えてくれませんか?SQL2005 以降ではエラーが発生しますが、SQL2000 では問題なく動作します。
コードから削除して再コンパイルしたいのですが、アプリケーション内の他の 10 個の機能が壊れてしまうのではないかと心配しています。
前もって感謝します...
これが取り引きです..誰かがあなたのコードで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
このコードもひどくインデントされる気がします。私はほとんどそれにいくらかのお金を入れても構わないと思っています。
それを削除して再コンパイルし、アプリケーションをテストして、どのような影響があるかを確認してみませんか?
うーん、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 を削除すると、クエリが台無しになります。