更新を実行しようとするこのような更新ステートメントがあります。私の SPROC では、2 つのパラメーター (@TransactAutoID または @ReceiptNo) のいずれか、または両方を渡します。私がやりたいことは、 @TransactAutoID が空の場合、代わりに @ReceiptNo を2番目の選択肢として使用することです。私の理解では、「OR」演算子は引き続きこれを実行するため、より良い、またはより効率的な記述方法はありますか:
OR (@ReceiptNo IS NOT NULL AND [AutoID] = (SELECT Max(AutoID)
FROM [Transact]
WHERE [ReceiptNo] = @ReceiptNo)
@TransactAutoID が null でない場合でも。ありがとう。
UPDATE [Transact]
SET [VoidBy] = @VoidedBy,
[VoidOn] = Getdate(),
[VoidReason] = @VoidedReason
WHERE (@TransactAutoID IS NOT NULL
AND [AutoID] = @TransactAutoID)
OR (@ReceiptNo IS NOT NULL AND [AutoID] = (SELECT Max(AutoID)
FROM [Transact]
WHERE [ReceiptNo] = @ReceiptNo)