You must precompile and compile an application program containing
embedded SQL statements before you can run it.
Note: SQL statements in a REXX procedure are not precompiled and compiled.
Precompiling of such programs is done by the SQL precompiler. The SQL
precompiler scans each statement of the application program source and does
the following:
- Looks for SQL statements and for the definition of host variable names. The
variable names and definitions are used to verify the SQL statements. You
can examine the listing after the SQL precompiler completes processing to
see if any errors occurred.
- Verifies that each SQL statement is valid and free of syntax errors. The
validation procedure supplies error messages in the output listing that help
you correct any errors that occur.
- Validates the SQL statements using the description in the database. During
the precompile, the SQL statements are checked for valid table, view, and
column names. If a specified table or view does not exist, or you are not
authorized to the table or view at the time of the precompile or compile,
the validation is done at run time. If the table or view does not exist at
run time, an error occurs.
Notes: - Overrides are processed when retrieving external definitions.
- You need some authority (at least *OBJOPR) to any tables or views referred
to in the SQL statements in order to validate the SQL statements. The actual
authority required to process any SQL statement is checked at run time.
- When the RDB parameter is specified on the CRTSQLxxx commands, the precompiler
accesses the specified relational database to obtain the table and view descriptions.
- Prepares each SQL statement for compilation in the host language. For
most SQL statements, the SQL precompiler inserts a comment and a CALL statement
to one of the SQL interface modules. For some SQL statements (for example,
DECLARE statements), the SQL precompiler produces no host language statement
except a comment.
- Produces information about each precompiled SQL statement. The
information is stored internally in a temporary source file member, where
it is available for use during the bind process.
To get complete diagnostic information when you precompile, specify either
of the following:
- OPTION(*SOURCE *XREF) for CRTSQLxxx (where xxx=CBL, PLI, or RPG)
- OPTION(*XREF) OUTPUT(*PRINT) for CRTSQLxxx (where xxx=CI, CPPI, CBLI,
or RPGI)