WHENEVER
The WHENEVER statement specifies the host language statement to be executed when a specified exception condition occurs.
Invocation
This statement can only be embedded in an application program. It is not an executable statement. It must not be specified in Java or REXX.
Authorization
None required.
Syntax
>>-WHENEVER--+-NOT FOUND--+--+-CONTINUE---------------------+-->< +-SQLERROR---+ '-+-GOTO--+--+---+--host-label-' '-SQLWARNING-' '-GO TO-' '-:-'
Description
- NOT FOUND
- Identifies any condition that results in an SQLCODE of +100 (equivalently, an SQLSTATE code of '02000').
- SQLERROR
- Identifies any condition that results in a negative SQLCODE.
- SQLWARNING
- Identifies any condition that results in a warning condition (SQLWARN0 is W), or that results in a positive SQLCODE other than +100.
- CONTINUE
- Specifies the next sequential statement of the source program.
- GOTO or GOTO host-label
- Specifies the statement identified by host-label. For host-label, substitute a single token, optionally preceded by a colon. The form of the token depends on the host language. In COBOL, for example, it can be section-name or an unqualified paragraph-name.
Notes
There are three types of WHENEVER statements:
- WHENEVER NOT FOUND
- WHENEVER SQLERROR
- WHENEVER SQLWARNING
Every executable SQL statement in an application program is within the scope of one implicit or explicit WHENEVER statement of each type. The scope of a WHENEVER statement is related to the listing sequence of the statements in the application program, not their execution sequence.
An SQL statement is within the scope of the last WHENEVER statement of each type that is specified before that SQL statement in the source program. If a WHENEVER statement of some type is not specified before an SQL statement, that SQL statement is within the scope of an implicit WHENEVER statement of that type in which CONTINUE is specified. If a WHENEVER statement is specified in a Fortran subprogram, its scope is that subprogram, not the source program.
The GET DIAGNOSTICS statement can be used to provide additional information.
Examples
The following statements can be embedded in a COBOL program.
EXEC SQL WHENEVER SQLERROR GOTO HANDLER END-EXEC.
EXEC SQL WHENEVER SQLWARNING CONTINUE END-EXEC.
EXEC SQL WHENEVER NOT FOUND GO TO ENDDATA END-EXEC.