VALIDATE [ ALLBASE/SQL Reference Manual ] MPE/iX 5.5 Documentation
ALLBASE/SQL Reference Manual
VALIDATE
[REV BEG][REV END]
The VALIDATE statement validates modules and procedures that have already
been created.
Scope
ISQL or Application Programs
SQL Syntax
[REV BEG]
VALIDATE [FORCE ]
[DROP SETOPTINFO]
{MODULE {{[Owner.]ModuleName}[,...] } }
{ {{SECTION [Owner.]ModuleName (SectionNumber)}[,...]} }
{ }
{PROCEDURE {{[Owner.]ProcedureName}[,...] }}
{ {{SECTION [Owner.]ProcedureName (SectionNumber)}[,...]}}
{ }
{ALL {MODULES } [WITH AUTOCOMMIT] }
{ {PROCEDURES} }
[REV END]
Parameters
[REV BEG]
WITH AUTOCOMMIT executes automatically a COMMIT WORK after each
module or procedure is updated.[REV END]
[Owner.]ModuleName identifies the module containing sections to be
validated. The owner name is the DBEUserID of
the person who preprocessed the program or the
owner name specified when the program was
preprocessed. The module name is the name stored
in the SYSTEM.SECTION view.[REV BEG]
[Owner.]ModuleName identifies the section number as well as the
(SectionNumber) module to be validated.[REV END]
[Owner.]ProcedureName identifies the procedure to validate. The owner
name is the DBEUserID of the person who created
the procedure or the owner name specified when
the procedure was created. The procedure name is
the name stored in the SYSTEM.SECTION view.[REV
BEG]
[Owner.]ProcedureName identifies the section number as well as the
(SectionNumber) procedure to be validated.
[REV END]
Description
* When you validate a module or procedure, all the sections within
it are checked and validation is attempted. If an embedded SQL
statement accesses an object that does not exist or that the
module or procedure owner is not authorized to execute, then the
corresponding section is marked invalid.
* You may find it convenient to use the VALIDATE statement after an
UPDATE STATISTICS, since UPDATE STATISTICS will invalidate stored
sections. If you issue both statements during a period of low
activity for the DBEnvironment, the optimizer will have current
statistics on which to base its calculations, with minimal
performance degradation.
* A temporary section cannot be validated.
* Users can specify the access plan of a query with the SETOPT
statement. To validate a module or procedure without the
user-specified access plan, include the DROP SETOPTINFO keyword in
the VALIDATE statement. The default access plan determined by
ALLBASE/SQL is stored in the system catalog instead.
* If a module or procedure cannot be validated, ALLBASE/SQL returns
an error.
* If a section is still invalid after revalidation, the module is
considered invalid.
* To find the names of procedures with invalid sections, use ISQL to
query the SYSTEM.SECTION view with Stype = 0.
* The VALIDATE statement will not revalidate sections that have been
stored prior to this release, for example, sections that have been
migrated from a previous release. These sections can only be
revalidated by running the application to execute all the
sections. An alternative is to recreate the module by
preprocessing the application again. Thereafter, you can use the
VALIDATE statement.
* For detailed information on modules refer to the section
"Invalidation and Revalidation of Sections" in the "Maintenance"
chapter of the ALLBASE/SQL Database Administration Guide and the
"Using the Preprocessor" chapter in your ALLBASE/SQL application
programming guide.
* For detailed information on procedures, refer to the "Constraints,
Procedures, and Rules" chapter.[REV BEG]
* When the WITH AUTOCOMMIT clause is used, a COMMIT WORK statement
is executed automatically after each MODULE or PROCEDURE is
validated. This can reduce both log space and shared memory
requirements for the VALIDATE command.
* When the FORCE clause is used, all sections associated with the
MODULE or PROCEDURE are revalidated, regardless of whether they
are valid or invalid.
* When the FORCE clause is used with VALIDATE ALL MODULES and
VALIDATE ALL PROCEDURES, every stored section in the database is
forced to recompile using the latest release. These statements
have essentially the same effect as preprocessing every program
again that uses the database.[REV END]
Authorization
You can execute this statement if you have OWNER or RUN authority on a
module or you have OWNER or EXECUTE authority for a procedure or if you
have DBA authority.
Examples
1. Validating sections in a module
ALLBASE/SQL validates sections at preprocessing time and run time.
To validate a section before running your application, you can use
the VALIDATE statement. To find the names of modules with invalid
sections, use ISQL to query the SYSTEM.SECTION view.
isql=> SELECT Name, Section FROM System.Section
> WHERE valid = 0 and stype = 0;
SELECT Name, Section FROM System.Section WHERE Valid=0 and Stype=0;
--------------------+---------------
NAME |SECTION
--------------------+---------------
CEXP06 |1
CEXP06 |2
CEXP06 |3
--------------------------------------------------------------------------
First 3 rows have been selected.
U[p], d[own], l[eft], r[ight], t[op], b[ottom], pr[int] <n>,or e[nd]>
Three sections of the module named CEX06 are invalid. Issue the
VALIDATE statement to attempt validation.
isql => VALIDATE MODULE CEXP06;
2. Dropping SETOPT access plan
The following SETOPT statement specifies that every table with an
index is accessed with an index scan.
isql => SETOPT GENERAL INDEXSCAN;
Validate the CEX09 module, but ignore the access plan specified in
the preceding SETOPT statement.
isql => VALIDATE DROP SETOPTINFO MODULE CEXP09;
[REV BEG]
3. When the WITH AUTOCOMMIT clause is used, a COMMIT WORK statement
is executed automatically after each module or procedure is
validated.
VALIDATE ALL MODULES WITH AUTOCOMMIT;
VALIDATE ALL PROCEDURES WITH AUTOCOMMIT;
4. When the FORCE clause is used, all sections associated with the
MODULE or PROCEDURE are revalidated regardless of whether they are
valid or invalid.
VALIDATE FORCE ALL MODULES WITH AUTOCOMMIT;
VALIDATE FORCE ALL PROCEDURES WITH AUTOCOMMIT;
[REV END]
MPE/iX 5.5 Documentation