SQL statements are not part of the host language but are embedded in an application written in the host language. The compilation of such a program consists of two phases; the precompilation of the SQL statements contained in the application program followed by the compilation of the actual program itself.
The SQL statements must be invisible to the host language compiler during the compilation phase. In fact, the embedded SQL statements are commented out by the precompiler and are replaced by statements generated into the application program in a form that corresponds to the requirements of the host language.
The precompiler must be able to identify all embedded SQL statements. Therefore, all SQL statements are delimited by special SQL delimiters. It is not possible to have more than one SQL statement between one set of delimiters.
The starting delimiter consists of a sequence of two words:
EXEC SQL
These words must be separated by one or more whitespace characters. They may be separated by one or more lines or blanks, and may be in either upper case or lower case depending on what the host language permits.
In ANSI mode, the two keywords must be in upper case and must be separated by blanks (not lines).
Once the starting delimiter has been specified, the statement itself must be provided. It must be separated from the starting delimiter by at least one whitespace character and may be specified on the same line or on a following line to the starting delimiter. The statement may be specified in either upper case or lower case and may be split over several lines. Each keyword or token must be separated by at least one whitespace character and may not be split over two or more lines. Keywords may be written in upper case or lower case depending on the host language. In ANSI mode, keywords must be written in upper case only.