CASE
式(ステートメントではない)であり、そのようなフローの制御には使用できません。コマンドを呼び出したり、複数の列/値を返したり、単独でコマンドとして使用したりすることはできません。
IF
日付が等しいときにエラーを発生させるために使用できるように思えますが、それ以外の場合は挿入を実行します。
IF @dateA = @dateB
BEGIN
raiseerror('dates equal',20,-1) with log;
END
ELSE -- maybe you don't need a batch-aborting, logging error level
BEGIN
INSERT ...
END
他の方法で行うこともできます。日付が等しくない場合のみ挿入を実行し、そうでない場合はエラーを発生させます。
IF @dateA <> @dateB
BEGIN
INSERT ...
END
ELSE
BEGIN
raiserror ...
END
あなたがエラーを使用することを考えている場合のみ、挿入を実行しているから抜け出すの目的のために、そしてあなただけからすべてを削除することができELSE
たときに挿入を実行する唯一の方法であるため、ダウン@dateA
して@dateB
いると等しくありません。
IF @dateA <> @dateB
BEGIN
INSERT ...
END
行(「レコード」と比較)や列(「フィールド」と比較)のようなものについて知識を深めるようにスケールを戻しましたが、式全体とステートメントの違いは、まさにこの理由から非常に重要です。「CASE式のダーティーシークレット」を参照してください。
CASE
ます-SQL ServerにはCASE
式しかありません。