== Why is this an issue?

The ``++CASE++`` statement should be used only to clearly define some new branches in the control flow. As soon as a ``++WHEN++`` clause contains too many statements this highly decreases the readability of the overall control flow statement. In such case, the content of ``++WHEN++`` clause should be extracted in a dedicated function.

=== Noncompliant code example

[source,sql]
----
CASE my_variable
  WHEN 0 THEN -- 6 lines till next WHEN
    procedure1;
    procedure2;
    procedure3;
    procedure4;
    procedure5;
  WHEN 1 THEN
-- ...
END CASE;
----

=== Compliant solution

[source,sql]
----
DECLARE
  PROCEDURE do_something AS
  BEGIN
    procedure1;
    procedure2;
    procedure3;
    procedure4;
    procedure5;
  END;
BEGIN
  CASE my_variable
    WHEN 0 THEN
      do_something;
    WHEN 1 THEN
-- ...
  END CASE;
END;
/
----

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

include::../parameters.adoc[]

'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]
