COBOL とは異なり、SQL では NULL 値を格納できる変数をサポートしています。NULL 値はエントリが存在しないことを意味し、通常は値が不明または未定義です。NULL 値を使用することにより、数字列のゼロや文字列の空白文字などの意図的なエントリを、不明なエントリや適用不能なエントリと区別できます。たとえば、価格列から取り込んだ値が NULL の場合でも、対応する品目は無料ではありません。価格は無効または未設定です。
データがデータベースからホスト変数に取り込まれたときに、切り捨てが実行される場合は、インジケーター変数を別の用途で使用できます。ホスト変数がデータベースから返されるデータを保持できるほど大きくない場合には、SQLCA データ構造体に警告フラグ (sqlwarn1) が設定され、インジケーター変数がデータベース内のデータのサイズに設定されます。
この例は、INTO... FETCH 文で使用されるインジケーター変数の宣言を示しています。
 EXEC SQL
     BEGIN DECLARE SECTION
 END-EXEC
 01 host-var       pic x(4).
 01 indicator-var  pic S9(4) comp-5.
 EXEC SQL
    END DECLARE SECTION
 END-EXEC
    . . .
     EXEC SQL
         FETCH myCursor INTO :host-var:indicator-var
     END-EXEC
 
		次の例は、saleprice ホスト変数とコンパニオン インジケーター変数 saleprice-null を使用する UPDATE 文を示しています。
     EXEC SQL
        UPDATE closeoutsale
           SET temp_price = :saleprice:saleprice-null, 
                listprice = :oldprice   
     END-EXEC
 
		この例では、saleprice-null の値が -1 の場合に UPDATE 文が実行されると、文は次のように読み取られます。
     EXEC SQL
        UPDATE closeoutsale
           SET temp_price = null, listprice = :oldprice   
     END-EXEC
 
		この例は、is null 構造体を使用した検索を示しています。
     if saleprice-null equal -1
         EXEC SQL
             DELETE FROM closeoutsale 
                    WHERE temp_price is null
         END-EXEC
     else
         EXEC SQL
             DELETE FROM closeoutsale 
                    WHERE temp_price = :saleprice
         END-EXEC
     end-if