All embedded SQL statements must be preprocessed
before they can be executed.
Preprocessing may be done by running the Pascal preprocessor
during application development, or it may be
done for dynamic commands when the program
is run. Preprocessing does the following:
Checks syntax: The syntax of SQL commands and host variable
declarations must be correct.
Verifies the existence of objects: Any object named in an SQL command
must exist.
Optimizes data access: If the statement accesses data, the fastest way
to access the data must be determined.
Checks authorizations: Both the program owner and the executor must
have the required authorities.
Creates sections: ALLBASE/SQL creates sections for SQL commands
when this is appropriate. At run time, the section is executed.
These preprocessing events take
place for all non-dynamic SQL commands when you run
the ALLBASE/SQL preprocessor. Non-dynamic commands are
fully defined in the source code and are preprocessed before
run time. So far, most of the examples in this manual have shown
non-dynamic preprocessing.
ALLBASE/SQL completes the preprocessing
of dynamic commands at run time, in an event known as
dynamic preprocessing. Any
SQL command except the following, which
do not require sections for execution, can
be preprocessed at run time:
BEGIN DECLARE SECTION FETCH
CLOSE CURSOR INCLUDE
DECLARE CURSOR OPEN CURSOR
DELETE WHERE CURRENT PREPARE
DESCRIBE SQLEXPLAIN
END DECLARE SECTION UPDATE WHERE CURRENT
EXECUTE WHENEVER
EXECUTE IMMEDIATE
|
Dynamic commands that are not queries
can be preprocessed at run time using the
PREPARE and EXECUTE statements or the EXECUTE IMMEDIATE statement.
Dynamic queries
are preprocessed using the PREPARE and DESCRIBE commands
in conjunction with the SQLDA or SQL Description Area (SQLDA).
These statements and data structures, used with a cursor,
are described further in a later section.