使用指示变量或数组将空值插入到列中

如果需要在列中插入空值,使用指示变量或数组是一种简便的方法。 指示变量或数组与特定的主变量或主变量数组相关联。

过程

使用指示变量或数组向列中插入空值:

  1. 为特定的主变量或数组定义一个指标变量或数组。
  2. 为指标变量或数组赋一个负值。
  3. 使用主机变量或数组及其指示变量或数组发出适当的插入、更新或合并语句。

    Db2 处理INSERT、UPDATE和MERGE语句时,它会检查指示变量是否存在。 如果指示变量为负,则列值为空。 如果指示变量大于 -1 ,则关联的主变量包含该列的值。

示例

使用指示变量将列值设置为空值的示例
假设您的程序读取了员工ID和新的电话号码,并且必须用新的号码更新员工表。 如果旧号码不正确,则可能无法获得新号码,但新号码尚未可用。 如果列 PHONENO 的新值可能为空,则可以使用指示变量,如下面的 UPDATE 语句所示。
EXEC SQL
  UPDATE DSN8C10.EMP
    SET PHONENO = :NEWPHONE:PHONEIND
    WHERE EMPNO = :EMPID
END-EXEC.
当NEWPHONE包含非空值时,在UPDATE语句前添加以下语句,将指示变量PHONEIND设置为零:
MOVE 0 TO PHONEIND.
当NEWPHONE包含空值时,通过在UPDATE语句前添加以下行,将PHONEIND设置为负值:
MOVE -1 TO PHONEIND.
使用指示变量数组将列值设置为空值的示例
假设主机变量数组 hva1 和 hva2 中已填充了要插入ACTNO和ACTKWD列的值。 假设ACTDESC列允许空值。 要将 ACTDESC 列设置为空,请将 -1 分配给其指示数组中的元素 ind3 ,如下例所示:
/* Initialize each indicator array */
for (i=0; i<10; i++) {
  ind1[i] = 0;
  ind2[i] = 0;
  ind3[i] = -1;
}

EXEC SQL
  INSERT INTO DSN8C10.ACT
    (ACTNO, ACTKWD, ACTDESC)
     VALUES (:hva1:ind1, :hva2:ind2, :hva3:ind3)
     FOR 10 ROWS;
Db2 忽略 数组中的值,并将插入的10行中的ARTDSC列中的值赋值为空。 hva3