An empty line separates one Invantive Script or Invantive UniversalSQL statement from the next. The split is textual and happens before a statement is parsed, so the vertical spacing of a script decides what its statements are. A comment counts as a statement. A `local` statement therefore needs an empty line both above and below it. A comment block placed directly above a `local` statement becomes part of that statement, and the statement then fails. The opposite holds within a statement. A PSQL block, a `create or replace` statement and a query spread over several lines hold no empty line at all, because the first one ends the statement halfway. A line holding only two hyphens provides the vertical space instead. ## Examples The second statement is not executed, because the empty line between the two is missing: ``` local remark The load results below will not be executed. local load results clipboard DATA from "c:\temp\non-existing-file.xml" format xml ``` An empty line between the two makes both of them run: ``` local remark The load results below are executed. local load results clipboard DATA from "c:\temp\results.xml" format xml ``` A comment above a `local` statement is separated from it by an empty line as well: ``` -- -- Read the results of the previous run. -- local load results clipboard DATA from "c:\temp\results.xml" format xml ``` The block below is one statement, so the comment inside it is surrounded by a line holding only two hyphens. An empty line in either place would end the block at that point: ``` begin dbms_output.put_line('Start.'); -- -- Report what has been done. -- dbms_output.put_line('Ready.'); end; ```