While not technically incorrect, the omission of BEGIN...END
can be misleading and may lead to the introduction of errors during
maintenance.
In the following example, the two statements seem to be attached to the IF
statement, but only the first one is, and
somethingElse
will always be executed:
IF @flag = 1 -- Noncompliant
EXEC something;
EXEC somethingElse;
Adding BEGIN...END
improves the code readability and its robustness:
IF @flag = 1
BEGIN
EXEC something;
EXEC somethingElse;
END;
The rule raises an issue when a control structure has no BEGIN...END
.