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;
```