上の例ではNULL値を扱いません。 実際、取り出し例では、もしデータベースからNULL値が取り出された場合にはエラーが発生します。 データベースへNULL値を渡す、または、データベースからNULL値を取り出すためには、第二のホスト変数指定をデータを格納するホスト変数それぞれに追加しなければなりません。 第二のホスト変数は指示子と呼ばれ、データがNULLかどうかを表すフラグが含まれます。 NULLの場合、実際のホスト変数の値は無視されます。 以下に、NULL値の取り出しを正しく扱う例を示します。
EXEC SQL BEGIN DECLARE SECTION END-EXEC. 01 VAL PIC X(50) VARYING. 01 VAL_IND PIC S9(9) COMP-5. EXEC SQL END DECLARE SECTION END-EXEC. ... EXEC SQL SELECT b INTO :VAL :VAL_IND FROM test1 END-EXEC.
値がNULLでなければ、指示子変数VAL_INDは0となります。 値がNULLならば負の値となります。
指示子は他の機能を持ちます。 指示子の値が正ならば、値がNULLではありませんが、ホスト変数に格納する際に一部切り詰められたことを示します。