不要将 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; /* This program fills in the employee number, name, initials, and phone number. */ if( /* Phone number is unknown */ ) { ind_phone = -1; } else { ind_phone = 0; } EXEC SQL INSERT INTO Employees VALUES (:employee_number, :employee_name, :employee_initials, :employee_phone:ind_phone ); |
如果指示符变量值为 -1,则写入 NULL。如果它具有值 0,则写入 employee_phone 的实际值。
从数据库中接收数据时也可使用指示符变量。它们用于指示读取了 NULL 值(指示符为负数)。如果从数据库中读取了 NULL 值,而又没有提供指示符变量,就会生成错误 (SQLE_NO_INDICATOR)。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |