如果程序检索到 NULL 值,该怎么办?

可在数据库中存储 NULL 值,但编程语言支持的数据类型不识别 NULL 状态。程序必须采用某种方式来识别 NULL 项,以免将它作为数据来处理。

在 SQL API 中,指示符变量满足此需要。指示符变量是与可能收到 NULL 项的主变量相关联的一个附加的变量。当数据库服务器将数据放在主变量中时,它还在指示符变量中放置一个特殊的值来展示该数据是否为 NULL。在下列 GBase 8s ESQL/C 示例中,选择单个行,并将单个值检索到主变量 op_date 内:
EXEC SQL SELECT paid_date
        INTO :op_date:op_d_ind
        FROM orders
        WHERE order_num = $the_order;
        if (op_d_ind < 0) /* data was null */
        rstrdate ('01/01/1900', :op_date);

语句该值可能为 NULL,名为 op_d_ind 的指示符变量与该主变量相关联。(必须在程序中的其他地方将它声明为以短整数。)

跟在 SELECT 语句的执行之后,程序测试该指示符变量为负值。负值(通常为 -1)意味着检索到主变量内的值为 NULL。如果该变量为 NULL,则此程序使用 GBase 8s ESQL/C 库函数来将缺省的值指定给主变量。(函数 rstrdateGBase 8s ESQL/C 产品的一部分。)

您用来将指示符变量与主变量相关联的语法,不同于您正在使用的语言,但在所有语言中,该原则是相同的。