埋め込み SQL 文を実行するたびに SQLCODE または SQLSTATE の値を明確に確認するには、多くのコードを記述する必要があります。この問題を回避するには、アプリケーションで WHENEVER 文を使用して、SQL 文の状態を確認します。
WHENEVER 文は実行文ではありません。埋め込み SQL 文が実行されるたびに、コンパイラ指令として、コンパイラにエラー処理コードを自動生成させます。
WHENEVER 文では、次に挙げる条件のそれぞれに対して、3 つのデフォルト動作 (CONTINUE、GOTO、または PERFORM) のいずれかを登録することができます。
ある特定の条件に対して WHENEVER 文を登録すると、以前に同じ条件に対して登録された WHENEVER 文の処理はすべて置換されます。
WHENEVER 文の適用範囲は、ソース プログラム内の物理的な位置で決まります。プログラムの実行順序における論理的な位置ではありません。たとえば、次のコードで、最初の SELECT 文が何も返さない場合には、段落 C ではなく段落 A が処理されます。
     EXEC SQL
         WHENEVER NOT FOUND PERFORM A
     END-EXEC.
     perform B.
     EXEC SQL
        SELECT col1 into :host-var1 FROM table1 
         WHERE col2 = :host-var2
     END-EXEC.
 A.
     display "First item not found".
 B.
     EXEC SQL
         WHENEVER NOT FOUND PERFORM C.
     END-EXEC.
 C.
     display "Second item not found".
 
	 Oracle、Sybase、および Informix では、SQLWARN0 が「W」に設定されると、「SQLWARNING」句がトリガーされます。
Oracle
Oracle プリコンパイラ指令 MODE の設定にかかわらず、SELECT 文または FETCH 文からデータが返されなかった場合には、常に NOT FOUND 条件がトリガーされます。
Informix
Informix では、WHENEVER 文内から STOP または CALL を実行できます。これは ANSI 規格に追加され、『INFORMIX-ESQL/COBOL Programmer's Manual』で説明されています。