不要将 SQL 的 NULL 概念与同名的 C 语言常量相混淆。在 SQL 语言中,NULL 代表未知属性或不适用的信息。C 语言常量表示不指向内存位置的指针值。
在 SQL Anywhere 文档中使用 NULL 时,它指的是以上给出的 SQL 数据库含义。该 C 语言常量称为 null 指针(小写)。
NULL 不同于列的已定义类型的任何值。为了将 NULL 值传递到数据库或接回 NULL 结果,除了常规主机变量外还需要其它条件。指示符变量就用于此目的。
INSERT 语句可按以下方式使用指示符变量:
EXEC SQL BEGIN DECLARE SECTION; short int employee_number; char employee_name[50]; char employee_initials[6]; char employee_phone[15]; short int ind_phone; EXEC SQL END DECLARE SECTION; /* set values of empnum, empname, initials, and homephone */ if( /* phone number is known */ ) { ind_phone = 0; } else { ind_phone = -1; /* NULL */ } EXEC SQL INSERT INTO Employee VALUES (:employee_number, :employee_name, :employee_initials, :employee_phone:ind_phone ); |
如果指示符变量的值为 -1,则写入 NULL。如果它具有值 0,则写入 employee_phone 的实际值。
从数据库中接收数据时也可使用指示符变量。它们用于指示读取了 NULL 值(指示符为负数)。如果从数据库中读取了 NULL 值,但未提供指示符变量,则生成 SQLE_NO_INDICATOR 错误。
有关在 SQLCA 结构中返回的错误和警告的详细信息,请参见初始化 SQL 通信区。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |